zoukankan      html  css  js  c++  java
  • 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])//报错
  • 相关阅读:
    POJ——T2186 Popular Cows || 洛谷——P2341 [HAOI2006]受欢迎的牛
    Tarjan缩点【模板】
    shell(1):网络配置、BATH环境和通配符
    STL
    J
    H
    G
    模板整理(二)
    B
    0-1背包问题
  • 原文地址:https://www.cnblogs.com/sunupo/p/15495899.html
Copyright © 2011-2022 走看看