我在对象中使用它时的TypeError

时间:2015-10-03 19:10:29

标签: javascript this

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

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

2 个答案:

答案 0 :(得分:4)

因为在对象a初始化期间,this指向窗口对象,所以只有构造函数this才会在新对象的上下文中创建。

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

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

答案 1 :(得分:0)

试试这个:

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来改变函数的行为,注意没有'归还这个';函数中的行,使用'new'

暗示 希望有所帮助。当这有意义时,请更深入地看一下原型过程并使用它。