1. 程式人生 > 其它 >ES6——Proxy實現鏈式操作

ES6——Proxy實現鏈式操作

利用 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])//報錯