var myObj = {
name:"mike",
go:function(){
console.log(this.name);
}
}
myObj.go() //logs out mike
setTimeout(this.myObj.go,200) //logs out (emptyString)
答案 0 :(得分:1)
setTimeout(function(){
myObj.go();
},200);
答案 1 :(得分:1)
定义一个引用该对象的变量:
var _this = this;
setTimeout(function() {_this.myObj.go();}, 200);
答案 2 :(得分:1)
有几种方法:
setTimeout(this.myObj.go.bind(this.myObj), 200);
或
var that = this;
setTimeout(function () {
that.myObj.go();
}, 200);
请注意,旧版浏览器不支持.bind
,因此可能需要填充以支持它。以下是有关该方法的一些信息:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
答案 3 :(得分:1)
var myObj = {
name:"mike",
go:function(){
console.log(this.name);
}
}
setTimeout(function(){myObj.go()},200)
答案 4 :(得分: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);
答案 5 :(得分:0)
你的代码是正确的,减去了一些东西。
setTimeout(this.myObj.go,200)
应该是
setTimeout(function() {myObj.go()},200)
未定义,因为this.myObj
不在setTimeout的范围内,也不包含在匿名函数或变量函数中。你虽然走在了正确的轨道上!