ES6——Proxy實現鏈式操作
阿新 • • 發佈:2021-11-01
利用 Proxy,可以將讀取屬性的操作( get ),轉變為執行某個函式,從而實現屬性的鏈式操作。
var pipe = (function() { return function(value) { // console.log(value) // 4 var funcStack = []; var oproxy = new Proxy({},{ get: function(pipeObject, fnName) { if (fnName === 'get') {return funcStack.reduce(function(val, fn) { // console.log(fn); return fn(val); }, value); } funcStack.push(window[fnName]); //為什麼可以通過window[fnName]呼叫。 return oproxy; } });return oproxy; } }()); console.log(pipe(4).double.pow.reverseInt.get); // 46
程式碼疑問:
為什麼可以通過window[fnName]呼叫。
funcStack.push(window[fnName]);
把這個位置的程式碼換成
funcStack.push(window.fnName);//報錯
會報錯。
return fn(val);
提示fn不是一個function。
但是通常都是這樣的啊?
var para = 1; alert(window.para)//正確 alert(window[para])//報錯