保留this
上下文的常用方法是什么?
什么更快?你更喜欢什么?
$。代理(...)
$('a').on('click', $.proxy(function() {
this.close();
}, this));
var self
var self = this;
$('a').on('click', function() {
self.close();
});
答案 0 :(得分:2)
让我们从修复代码开始吧。您有一个无用的函数声明,您可以使用$.proxy
作为
$('a').on('click', $.proxy(this.close, this));
现在,第二个解决方案基于self
self
变量这可能是它更常用的原因。
请注意,当您不必与IE8兼容时,您可以使用bind:
$('a').on('click', this.close.bind(this));
答案 1 :(得分:1)
两者都很常见。
这种情况下的速度无关紧要。用户不会注意到在0.01毫秒后是否开始点击回调。或0.1毫秒。
对于罕见的重要场合,我希望变量方法稍快一点,但你必须对它进行基准测试。
我个人的偏好会有所不同,具体取决于它的使用位置以及回调中的代码。变量方法的一个优点是它适用于嵌套回调,而无需将其重新应用到每个级别。
答案 2 :(得分:0)
选择第一个。不需要额外的变量。