我可以创建一个变量或绑定。什么是最好的解决方案?
var object = {
log: function (s) {
console.log(s);
},
run: function () {
var self = this;
setTimeout(
function () {
self.log('test');
}, 1000
);
}
};
object.run();
或者:
var object = {
log: function (s) {
console.log(s);
},
run: function () {
setTimeout(
function () {
this.log('test');
}.bind(this), 1000
);
}
};
object.run();
更新:有很多方法可以决定这一点。兼容性、性能和可读性方面是最重要的。
Function.prototype.bind 函数比较新,使用前请检查兼容性表。
关于性能最好使用self。多次调用函数时,bind 可能会更好,但这超出了这个问题的范围。
我更喜欢 bind 更好的可读性。