我正在使用以下代码来检索模块的一些过滤的私人信息:
var someObject = (function (){
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function filteredNumbersInternal(criterion) {
return numbers.filter(function (number) { return criterion(number, this) }, this);
}
return {
filteredNumbers: filteredNumbersInternal
}
});
var someInstance = new someObject();
function less(than) {
return function (number, context) {
return number < than;
}
}
var smallNumbers = someInstance.filteredNumbers(new less(5));
这样我可以定义任意过滤器函数并将它们传递给filter-method。当我使用工厂进行过滤器功能时,有没有办法可以避免 new 关键字,例如有没有办法写
var smallNumbers = someInstance.filteredNumbers(less(5));
如果我像这样写工厂
function less(than) {
return new function (number, context) {
return number < than;
}
}
它只返回并清空对象。