我正在使用如下代码
function Basket () {
this.items = new Array();
}
Basket.prototype.addItem = function(item) {
this.items.push(item);
setTimeout(this.showItems, 1000);
};
Basket.prototype.showItems = function() {
console.log('items in Basket: '+this.items.join(', '));
}
var b = new Basket()
b.addItem('bananas')
// -> Uncaught TypeError: Cannot call method 'join' of undefined
调用 addItem 方法时,正确调用了 showItems 方法,但在 showItems 方法中,变量“this”没有引用 Basket 对象。使用原型框架我可以做类似的事情
setTimeout(this.showItems.bind(this), 1000)
这会将变量“this”绑定到 showItems 方法中的 Basket 对象。
问题:如何在 jQuery 中实现这一点?有没有比像这样包装调用方法更优雅的方法(最佳实践):
// ...
$this = this
setTimeout(function() {$this.showItems($this)}, 1000)
Basket.prototype.showItems = function ($this) {
console.log('items in Basket: '+$this.items.join(', '));
}
我也很高兴,如果有人可以发布一些有用的关键字,我可以如何搜索这类问题,我敢肯定,我不是唯一一个问这个的人。但是,当您没有想到框架时,自然很难搜索“原型”,而是对象的扩展(或您如何称呼它)。
谢谢