function chain(arr) {
function wrapChain(func) {
return function(...args) {
arr = func.call(null, arr, ...args)
return this;
}
}
return {
take: wrapChain(self.take),
skip: wrapChain(self.skip),
map: wrapChain(self.map),
reduce: wrapChain(self.reduce),
foreach: wrapChain(self.foreach),
filter: wrapChain(self.filter),
value: () => arr
};
}
Интересует еменно функция wrapChain,
сделал что-то похожее но не робит
class Chain extends CustomArrayFunctions {
constructor(arr) {
super();
this.arr = arr;
return this;
}
wrapChain(func){
return (...args)=>{
this.arr = func.call(null, this.arr, ...args);
return this;
}
}
take(){
return this.wrapChain(super.take);
}
}