返回JavaScript中的包装对象

返回JavaScript中的包装对象,javascript,underscore.js,Javascript,Underscore.js,我一直在研究下划线z.chain()函数。我知道它返回一个包装对象,并且在调用该对象上的方法之前,将继续返回包装对象。然而,我希望能够在纯javascript中实现这一点,但我不确定如何在vanilla js中返回包装好的对象 您可以创建一个包含函数的“包装对象”,该函数返回此值: function _(xs) { return { map: function(f) { xs = xs.map(f) return this }, filter:

我一直在研究下划线z.chain()函数。我知道它返回一个包装对象,并且在调用该对象上的方法之前,将继续返回包装对象。然而,我希望能够在纯javascript中实现这一点,但我不确定如何在vanilla js中返回包装好的对象

您可以创建一个包含函数的“包装对象”,该函数返回此值:

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]
函数(xs){
返回{
地图:功能(f){
xs=xs.map(f)
还这个
},
过滤器:功能(f){
xs=xs.filter(f)
还这个
},
值:函数(){
返回xs
}
}
}
var result=uz([1,2,3]).map(函数(x){
返回x+1
}).过滤器(功能(x){
返回x<4
}).value()
console.log(结果)/=>[2,3]

您需要一些东西来包装它。您需要创建一个类,将值存储在其中,然后让每个方法
返回这个值修改存储值时。