JavaScript的上下文比较“排序”的功能

时间:2013-01-23 12:17:30

标签: javascript

在我的“class”方法中,我使用JavaScript“sort”函数加上一个比较函数:

this.models.sort(this.comparator);

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

我知道可以这样做:

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

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

非常感谢

2 个答案:

答案 0 :(得分:5)

您可以使用bind

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

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

由于这与IE8不兼容,通常采用封闭解决方案。但你可以更简单:

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

答案 1 :(得分:2)

您可以使用bind

执行此操作
this.models.sort(this.comparator.bind(context));