var myObj = {
name:"mike",
go:function(){
console.log(this.name);
}
}
myObj.go() //logs out mike
setTimeout(this.myObj.go,200) //logs out (emptyString)
问问题
99 次
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 回答