setTimeout里面this指向问题
var test = { info: "hello", fn: function(){ console.log(this.info); setTimeout(arguments.callee, 1000) } }
运行上面的test.fn()的时候。。第一次是可以返回"hello"的。第二次之后就返回"undefined"了,把console.log(this.info)改成console.log(this)可以发现,原因是setTimeout里面的this在第二次以后都变成指向window了。。我们的目的是让this指向test。搜了一下资料。找出一个解决方法:
var test = { info: "hello", fn: function(){ console.log(this.info); setTimeout(this.bind(this, arguments.callee), 1000); }, bind: function(object, func){ return function(){ return func.apply(object, arguments) } } }