为了账号安全,请及时绑定邮箱和手机立即绑定

prototype中this的疑问

prototype中this的疑问

慕斯王 2019-04-13 08:46:09
看代码functionA(){this.init();}functintest(){console.log('test');}A.prototype.init=function(){this.test=test.bind(this)//看这里this.prototype.test=test(this)//还是这里}看上面代码中我标记的地方,我想动态绑定一个外部函数作为A对象的方法,init方法里的this是指functionA呢还是A.prototype?
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

动态绑定一个外部函数作为A对象的方法
functiontest(){
console.log('test');
}
A.prototype.init=function(){
this.test=test;
}
这样就可以了。
init方法里的this是指functionA呢还是A.prototype?
vara=newA();
a.init();
以上面这样方式调用init方法的话,init方法中的this指向a
A.prototype.init();
以上面这样方式调用init的话,this指向A.prototype
                            
查看完整回答
反对 回复 2019-04-13
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我觉得
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指向aA.prototype.init()时this指向A.prototype
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 645 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信