在我的“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);});
但有人知道更简单的方法吗?
非常感谢
答案 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));