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

Wol*_*mec 2 javascript

在我的“类”方法中,我使用了JavaScript的“排序”功能以及一个比较功能:

this.models.sort(this.comparator);
Run Code Online (Sandbox Code Playgroud)

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

我知道可以这样做:

var self = this;
this.models.sort(function(a, b){return self.comparator.call(self, a, b);});
Run Code Online (Sandbox Code Playgroud)

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

在此先感谢

Den*_*ret 5

您可以使用bind

 this.models.sort(this.comparator.bind(this));
Run Code Online (Sandbox Code Playgroud)

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

由于此版本与IE8不兼容,因此通常采用封闭解决方案。但是您可以使其更简单:

var self = this;
this.models.sort(function(a, b){return self.comparator(a, b);});
Run Code Online (Sandbox Code Playgroud)