1

有以下代码。

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

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

4

3 回答 3

1

里面的 setIntervalthis是指窗口。您需要创建一个引用this.

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

    this.uw=setInterval( function() {
       console.log(me);
    }, 200);
}
于 2012-11-14T13:40:32.150 回答
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);
}
于 2012-11-14T13:41:15.557 回答
0

我认为这bind是一个巧妙的解决方案 - 它并非在所有浏览器中都实现,但有一些解决方法

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

有关正确的文档,请参阅MDN 页面

于 2012-11-14T14:59:25.493 回答