繁体   English   中英

当我在对象中使用TypeError时

[英]TypeError when I use this in an object

您能否解释为什么此代码返回此错误TypeError: this.b is not a function

var a = {
  b: function() {
    return 1;
  },
  c: this.b()
}

因为在反对a初始化, this是指向窗口对象,只是在构造函数中this将是在新对象的情况下得到建立。

试试这个以获得更多信息。

var a = {b: function() {return 1;}, c: this}
console.log(a.c) //output is window object

尝试这个:

var maker = function(){  
    this.b = function(){return 1;};
    this.c = b();
}

var a = new maker();

console.log(a.b());
console.log(a.b);
console.log(a.c);

关键字“新”是关键。

您可以创建仅被调用的函数,而无需使用“ new”

或将创建并返回新对象并需要使用new的函数,这些通常称为构造函数,但关键是此处使用关键字new会更改函数的行为,请注意,没有“退还;” 函数中的一行,这是通过使用“ new”来暗示的

希望能有所帮助。 当这有意义时,请更深入地研究原型过程并进行试验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM