2015-12-08 42 views
1

我一直在寻找下划线_.chain()函数。我知道它会返回一个包装对象,并且调用此对象上的方法将继续返回包装对象,直到调用值。不过,我希望能够在纯JavaScript中做到这一点,但我不确定如何返回一个包装在香草js中的对象。返回JavaScript中的包装对象

+1

你会需要的东西,把它包在你需要做一个类,存储在它的价值和只需要在修改存储值的同时使每个方法都返回这个; –

回答

3

您可以创建一个“包装物”与有return this功能的对象:

function _(xs) { 
    return { 
    map: function(f) { 
     xs = xs.map(f) 
     return this 
    }, 
    filter: function(f) { 
     xs = xs.filter(f) 
     return this 
    }, 
    value: function() { 
     return xs 
    } 
    } 
} 

var result = _([1,2,3]).map(function(x) { 
    return x + 1 
}).filter(function(x) { 
    return x < 4 
}).value() 

console.log(result) //=> [2, 3]