【发布时间】:2015-07-06 11:04:39
【问题描述】:
当我们需要使用当前上下文对象调用 javascript 函数时,我看到有两个选项:
- 使用函数绑定
- 使用 Javascript 闭包
函数绑定示例
myProject.prototype.makeAjax = function() {
$.get('http://www.example.com/todoItems', function success(items) {
this.addItemsToList(items)
}.bind(this));
}
JS 闭包示例
myProject.prototype.makeAjax = function() {
var that = this;
$.get('http://www.example.com/todoItems', function success(items) {
that.addItemsToList(items)
});
}
我想问:
- 两者哪个在性能方面更好?
- 编写代码时应该首选哪个?
【问题讨论】:
-
不确定是谁投票关闭,但我不认为这太宽泛了?最多可以认为第 2 点是主观的,但选择一种方法或另一种方法有具体的理由。
-
@Ian Point 2 也不是主观的。如果一种方法在某些情况下比另一种方法更好,而在其他情况下另一种方法应该回答这个问题。这就是我要找的。虽然我知道两者可以互换使用,但我还是把第 2 点放在一起,以防万一有人补充一些明智的意见
-
对于所示的特定示例,我认为性能根本不是问题 - 您不会同时进行许多 Ajax 调用,是吗?但是假设在一个循环中有很多使用,我可能会从你个人喜欢的任何一个开始,除非你发现问题,否则不用担心性能。
-
@nnnnnn 这与示例无关。它更多地是关于方法。方法 1 的性能与方法 2 的性能。我只是写了一些虚拟示例。
-
这里的比较不错:javascript.info/tutorial/binding
标签: javascript function closures bind