//利用 Proxy,可以将读取属性的操作(get)
var pipe = function (value){
let funStack = []
var oproxy = new Proxy({}, {
get: function(pipeObject, fnName){
console.log("方法名称----》", fnName, pipeObject, funStack)
if(fnName === "get"){
return funStack.reduce(function(val, fn){
console.log("val--->", val, "fn------->", eval(fn+"("+val+")"), typeof fn)
return eval(fn+"("+val+")")
// return val
},value)
}
funStack.push(fnName)
return oproxy
}
})
return oproxy;
}
var double = n => n * 2;
var pow = n => n * n;
var reserveInt = n => n.toString().split("").reverse().join("") | 0;
var num = pipe(3).double.pow.reserveInt.get;
console.log(num) //63