[英]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.