Maison > Questions et réponses > le corps du texte
看代码
function A () {
this.init();
}
functin test () {
console.log('test');
}
A.prototype.init = function () {
this.test = test.bind(this) // 看这里
this.prototype.test = test(this) // 还是这里
}
看上面代码中我标记的地方,我想动态绑定一个外部函数作为A
对象的方法,init
方法里的this
是指function A
呢还是A.prototype
?
高洛峰2017-04-10 14:37:22
动态绑定一个外部函数作为A对象的方法
function test() {
console.log('test');
}
A.prototype.init = function() {
this.test = test;
}
这样就可以了。
init方法里的this是指function A呢还是A.prototype?
var a = new A();
a.init();
以上面这样方式调用init方法的话,init方法中的this指向a
A.prototype.init();
以上面这样方式调用init的话,this指向A.prototype
天蓬老师2017-04-10 14:37:22
我觉得
A.prototype.init = function () {
this.test = test.bind(this) // 看这里
this.prototype.test = test(this) // 这里会报错,this.prototype是undefined ,
//因为函数才有prototype ,还有__proto__,对象只有__proto__属性
//虽然函数也是一种对象,但这里应该把函数与对象分开
}
init()里的this是根据谁来调用它来决定的
a.init()时this指向a
A.prototype.init()时this指向A.prototype