您能解释为什么此代码会返回此错误TypeError: this.b is not a function
:
var a = {
b: function() {
return 1;
},
c: this.b()
}
答案 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'
暗示 希望有所帮助。当这有意义时,请更深入地看一下原型过程并使用它。