zoukankan      html  css  js  c++  java
  • es6-proxy

    proxy :代理
    增强 扩展
    一个 Proxy 对象由两个部分组成: target 、 handler 。
    在通过 Proxy 构造函数生成实例对象时,需要提供这两个参数。
    target 即目标对象, handler 是一个对象,声明了代理 target 的指定行为。
    handler:{
    set(){} 设置
    get(){} 获取
    deleteProperty(){} 删除
    has(){} //有没有
    apply() //调用函数
    }
    例子1:
    let target = {
        name: "Tom",
        age: 24
      };
      let handler = {
        get: function(target, key) {
          console.log("getting " + key);
          return target[key]; // 不是target.key
        },
        set: function(target, key, value) {
          console.log("setting " + key);
          console.log(target[key])
          target[key] = value;
        }
      };
      let proxy = new Proxy(target, handler);
      proxy.name; // 实际执行 handler.get
      console.log(proxy.age)
      proxy.age = 25; // 实际执行 handler.set

    例子2:创建元素

    //拦截
        const DOM=new Proxy({},{
            get(target,property){
                console.log(property)
                return function(attr={},...children){
                    const el=document.createElement(property)
                    for(let key of Object.keys(attr)){
                        el.setAttribute(key,attr[key])
                    }
                    for(let child of children){
                        if(typeof child=='string'){
                            child=document.createTextNode(child)
                        }
                        el.appendChild(child)
                    }
                    return el;
                }
            }
        })
       let oDiv=DOM.div({id:'div1',class:'aaa'},'我是Div','呵呵',DOM.a({href:'http://baidu'},'百度'))
       console.log(oDiv)
     
    ♪♫♬ 梦想我想不只是拿来实现的,它可以提醒我们,我们可以努力,我们可以变更好。
  • 相关阅读:
    批量管理服务器,批量分发文件
    IIS最大连接数优化
    在CentOS 7中安装与配置JDK8
    可扩展流程设计工具方案
    An internal erroroccurred during: "Removing compiler problem markers...".java.lang.String
    .NET和java之争实没必要
    提高生产率的VS插件
    Java Synchronized关键字
    Flex拖动实现方法
    WF3.0和4.0区别介绍
  • 原文地址:https://www.cnblogs.com/yanloveyue/p/11286839.html
Copyright © 2011-2022 走看看