我正在學習underscore.js和javascript編程。 雖然我看到下劃線的來源,但我無法理解它的某些部分。爲什麼'_.negate'用法在'underscore.js'中使用'this'參數?
我不明白爲什麼它使用'this'在_.negate中,因爲其他部分接收'上下文並使用它們。 以下是源代碼。
https://github.com/jashkenas/underscore/blob/master/underscore.js
_.negate = function(predicate) {
return function() {
return !predicate.apply(this, arguments);
};
};
在使用_.negate的地方是在_.reject和_.omit。 查看_.reject的代碼,它接收'上下文'並將其用於上下文。
_.filter = _.select = function(obj, predicate, context) {
var results = [];
if (obj == null) return results;
if (nativeFilter && obj.filter === nativeFilter) {
return obj.filter(predicate, context);
}
each(obj, function(value, index, list) {
if (predicate.call(context, value, index, list)) results.push(value);
});
return results;
};
_.reject = function(obj, predicate, context) {
return _.filter(obj, _.negate(predicate), context);
};
請給我一些解釋。 在此先感謝。
in'_.reject'過濾器函數接收上下文作爲第三個參數否定只接收謂詞 –