-1
var myObj = {
    name:"mike",
    go:function(){
        console.log(this.name);
    }

}

myObj.go()   //logs out mike
setTimeout(this.myObj.go,200)  //logs out (emptyString)
4

6 回答 6

1

试试这个

setTimeout(function(){
  myObj.go();
},200);
于 2013-04-08T21:17:13.490 回答
1

在之前定义一个引用对象的变量:

var _this = this;
setTimeout(function() {_this.myObj.go();}, 200);
于 2013-04-08T21:17:57.133 回答
1

几种方式:

setTimeout(this.myObj.go.bind(this.myObj), 200);

或者

var that = this;
setTimeout(function () {
    that.myObj.go();
}, 200);

请注意,.bind旧浏览器不支持它,因此可能需要 polyfill 才能支持它。以下是有关该方法的一些信息:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind

于 2013-04-08T21:17:57.907 回答
1
var myObj = {
    name:"mike",
    go:function(){
        console.log(this.name);
    }

}

setTimeout(function(){myObj.go()},200)
于 2013-04-08T21:18:32.160 回答
1

尝试这个

var myObj = {
    name:"mike",
    go:function(){
        console.log(this.name);
    }

}

myObj.go();   //logs out mike
setTimeout(function(){
    myObj.go(); //logs out mike too
},200);
于 2013-04-08T21:20:46.870 回答
0

你的代码是正确的减去一些东西。

setTimeout(this.myObj.go,200)

应该

setTimeout(function() {myObj.go()},200)

它是未定义的,因为this.myObj它不在 setTimeout 的范围内,也不包含在匿名函数或变量函数中。不过,您走在正确的轨道上!

于 2013-04-08T21:39:26.933 回答