访问作为参数传递的函数中的对象变量

时间:2016-08-25 19:04:27

标签: javascript

如果我将此函数作为参数传递然后调用它,

在访问对象函数中的对象参数时出现问题。在下面的代码中,我原以为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
}

1 个答案:

答案 0 :(得分:2)

如果你调用函数,那么函数只从.之前的值获取其上下文,即你写this.test3()。使用this.test3创建函数引用并不绑定上下文。为此,您需要明确调用.bind()

this.test2(this.test3.bind(this));