javascript返回新功能这个上下文

时间:2014-03-05 14:55:59

标签: javascript this factory

我正在使用以下代码来检索模块的一些过滤的私人信息:

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;
    }
}

它只返回并清空对象。

0 个答案:

没有答案