zoukankan      html  css  js  c++  java
  • @芥末的糖 ---------- ES6---Proxy与Reflect 实现重载(overload)

    Proxy与Reflect实现重载(overload)

    从语法角度讲JavaScript不支持重载。原因很简单,JS中函数可以传入任意类型、任意个数的参数,通通可以通过在函数内使用this.arguments获得。这样,就无法实现同名函数参数列表不同实现不同功能。当然,在实际使用过程中,可以人为去检测传入实参的个数及类型,来进行不同操作。但是,我认为这不能叫做重载。

    ES6带来了Proxy和Reflect,配合使用可以实现重载。Proxy用于修改某些操作的默认行为,相当于对原始想进行的操作进行“包装”;Reflect对象的方法与Proxy对象的方法一一对应,这使得Proxy对象可以方便的调用对应的Reflect方法完成默认行为。我们可以这样使用它们:

    function LogMessage( m ){
        this.m = m;
    }
    var message = new LogMessage( 1 );
    var overload = new Proxy(message , {
        get: function(target, key, receiver){
            console.log(`getting ${key}`);
            return Reflect.get(target , key , receiver);
        },
        set: function(target, key, value, receiver){
            console.log(`setting ${key}`);
            return Reflect.set(target, key, value, receiver);
        }
    });
    overload.m = 2; //setting m
    var s = overload.m; //getti
    
     
     
    对应对象内建的14个方法,handler也有14个方法可以覆盖,下面我们将会一一讲解。
     
     
    //14个内建的方法地址
    //https://blog.csdn.net/qq_28506819/article/details/71077788
  • 相关阅读:
    .net 文件夹是否存在的判断
    Lock Statement And Thread Synchronization
    如何利用EnteLib Unity Interception Extension 和PIAB实现Transaction
    OSQL 命令行工具
    How to build tab sets whitch headers display at bottom in WPF?
    Monitoring Clipboard Activity in C#
    产品经理讲座的感悟
    图说
    解决技术问题的9点建议
    为啥要整理需求?
  • 原文地址:https://www.cnblogs.com/moonzwt/p/9889016.html
Copyright © 2011-2022 走看看