[英]Accessing 'this' in Javascript closure
這比其他任何事情更像是一種健全性檢查。 我發現在使用Javascript中的閉包時,我經常使用以下模式從函數中訪問封閉類:
MyClass.prototype.delayed_foo = function() {
var self = this;
setTimeout(function() {
self.foo(); // Be nice if I could use 'this' here
}, 1000);
};
顯然這種方法很好,而且使用起來也不是很麻煩。 在我的腦后只有這個小小的癢,說“你讓這太復雜了,假的!” 這是普遍接受的模式嗎?
這與異常的普遍接受的模式that
經常使用的,而不是self
。
你可以使用像這樣的綁定函數來偷偷摸摸地:
var Binder = function(fnc, obj) {
return function() {
fnc.apply(obj, arguments);
};
};
然后將你的電話改為
MyClass.prototype.delayed_foo = function() {
setTimeout(Binder(function(){
this.foo("Lols");
},this), 1000);
};
jsfiddle示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.