>有没有办法做到这一点?在下面的代码片段中,从sortByLyncStatus
中调用sortByName
this
无法访问 FN
原型定义:
sortByName: function (bud, light) {
if (bud.FullName < light.FullName)
return -1;
if (bud.FullName > light.FullName)
return 1;
return 0;
},
sortByLyncStatus: function (chuck, norris) {
if (chuck.LyncAvailability == "Available" && norris.LyncAvailability == "Available") {
return this.sortByName(chuck, norris);
}
else {
if (chuck.LyncAvailability == "Available")
return -1;
if (norris.LyncAvailability == "Available")
return 1;
else { // both are away, inactive, offline, or out of office
var chuckLastActive = $.toDateFromJson(chuck.LyncLastActive);
var norrisLastActive = $.toDateFromJson(norris.LyncLastActive);
if (chuckLastActive < norrisLastActive)
return 1;
if (chuckLastActive > norrisLastActive)
return -1;
return this.sortByName(chuck, norris);
}
}
}
溶液
some.prototype.obj = {
sortByName: function (a, b) {
// omitted for solution
},
sortByLyncStatus: function(a, b) {
// compare cases
// default to name comparison
return some.prototype.obj.sortByName(a, b);
}
}
>this
将引用大多数排序的窗口。除非您将 sortByName 定义为全局函数,否则它不会作为 this
上的方法存在。
您可以将其定义为函数而不是方法并直接调用它,如下所示:
var sortByName = function(a,b){};
var sortByLyncStatus = function(a,b){
return sortByName(a,b);
}