在访问对象函数中的对象参数时出现问题。在下面的代码中,我原以为this.radius == 100
总是如此。将鼠标悬停在test3
下方是不是事先我将test3
作为参数传递。知道为什么以及如何在那里访问变量?
干杯 汤姆
Test = function ( ) {
var self = this;
this.radius = 100;
this.test1();
}
Test.prototype.test1 = function() {
console.log("test1 - this"+this.radius);// this.radius==100
console.log("test1 - self"+self.radius);// self.radius==undefined
this.test2(this.test3);
}
Test.prototype.test2 = function (func){
console.log("test2- this"+this.radius);// this.radius==100
console.log("test2- self"+self.radius);// self.radius==undefined
func();// calling the function passed as parameter
}
Test.prototype.test3 = function (){
console.log("test3- this"+this.radius);// this.radius==undefined
console.log("test3- self"+self.radius);// self.radius==undefined
}
答案 0 :(得分:2)
如果你调用函数,那么函数只从.
之前的值获取其上下文,即你写this.test3()
。使用this.test3
创建函数引用并不绑定上下文。为此,您需要明确调用.bind()
:
this.test2(this.test3.bind(this));