var myObj = {
name:"mike",
go:function(){
console.log(this.name);
}
}
myObj.go() //logs out mike
setTimeout(this.myObj.go,200) //logs out (emptyString)
定义一个变量引用前面的对象:
var _this = this;
setTimeout(function() {_this.myObj.go();}, 200);
var myObj = {
name:"mike",
go:function(){
console.log(this.name);
}
}
setTimeout(function(){myObj.go()},200)
试试这个:
setTimeout(function(){
myObj.go();
},200);
试试这个
var myObj = {
name:"mike",
go:function(){
console.log(this.name);
}
}
myObj.go(); //logs out mike
setTimeout(function(){
myObj.go(); //logs out mike too
},200);
几种方法:
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
你的代码是正确的,除了一些东西。
setTimeout(this.myObj.go,200)
应该setTimeout(function() {myObj.go()},200)
未定义,因为this.myObj
不在setTimeout的作用域中,也没有被封装在匿名函数或变量函数中。不过你的思路是对的!