如何在嵌套方法中引用对象

时间:2012-11-14 13:39:22

标签: javascript

拥有以下代码。

object.waypoint=function () {
    this.uw=setInterval( function() {
       console.log(this);
    }, 200);
}

如何在第三行的函数内部引用“object”,我用“this”关键字尝试了它,但它似乎没有引用该对象。

3 个答案:

答案 0 :(得分:1)

内部setInterval this指的是窗口。您需要创建一个引用this的变量。

object.waypoint=function () {
    var me = this;

    this.uw=setInterval( function() {
       console.log(me);
    }, 200);
}

答案 1 :(得分:1)

一种常见的方法是在变量中存储this的引用,然后您可以使用它来访问正确的this

object.waypoint=function () {
    // Keep a reference to this in a variable
    var that = this;
    that.uw=setInterval( function() {
       // Now you can get access to this in here as well through the variable
       console.log(that);
    }, 200);
}

答案 2 :(得分:0)

我认为bind是一个简洁的解决方案 - 它没有在所有浏览器中实现,但有workarounds

object.waypoint = function(){
    this.uw = setInterval(function(){
        console.log(this);
    }.bind(this), 200);
}

请参阅MDN page了解正确的文档