2

在我的“类”方法中,我使用 JavaScript“排序”函数和比较函数:

this.models.sort(this.comparator);

当排序函数调用我的比较器时,是否可以为比较器定义上下文/“this”?

我知道可以这样做:

var self = this;
this.models.sort(function(a, b){return self.comparator.call(self, a, b);});

但是有人知道更简单的方法吗?

非常感谢提前

4

2 回答 2

5

您可以使用绑定

 this.models.sort(this.comparator.bind(this));

bind构建一个新的绑定函数,它将与您传递的上下文一起执行。

由于这与IE8不兼容,因此通常采用关闭解决方案。但是你可以让它更简单:

var self = this;
this.models.sort(function(a, b){return self.comparator(a, b);});
于 2013-01-23T12:19:54.603 回答
2

您可以使用以下方法执行此操作bind

this.models.sort(this.comparator.bind(context));
于 2013-01-23T12:20:14.843 回答