ES6之对象扩展

作者: ferrint | 来源:发表于2017-03-13 14:30 被阅读6次

    关键词:对象扩展

    return的返回值只能是一个。我们之前在函数中返回一个对象的时候是这么做的

    function fn(x,y) {
        x++;
        y++;    
        return{
            x:x,
            y:y
       }
      }
      console.log(fn(1,2));
    
    
    // ES6
    function fn1(x,y) {
        x++;
        y++;    
        return{x,y}
      }
      console.log(fn1(1,2));
    

    ES6中我们可以玩的花样更多了

      var sex = '御姐';
      var person = {
        name:'赵无垢',
        sex:'抠脚大汉',
        [sex]:'萝莉',
        ['get'+'name'](){
           return this.name;
        }
      };
        console.log(sex);  // 御姐
        console.log(person.getname()); // 赵无垢
        console.log(person[sex]);  // 萝莉
        console.log(person.sex);  // 抠脚大汉
    
    Object.is()

    真是要上天,我们之前熟悉的一些语法规则,用了这个方法可能要变天了

        console.log(0 === -0);  // TRUE
        console.log(NaN === NaN);  //FALSE
        console.log(Object.is(0,-0));     // FALSE
        console.log(Object.is(NaN,NaN));  //TRUE
    
    Object.assign()

    语法:Object.assign( '组合’,‘被组合’,‘被组合’ ...)
    没错,现在对象都可以合并了

        var obj1 = {
          age:30,
          sex:'男',
        };
        var obj2 = {
            name:'王者小弟'
        };
        var obj3 = {
            name:'耶和华',
            range:'白金',
            scope:'艾欧尼亚'
        }
        Object.assign(obj1,obj2,obj3);  
        console.log(obj1); 
        Object.assign(obj1,obj3,obj2); 
        console.log(obj1);
        var Cat = function(name){
            this.name = name;
        };
    
    Proxy()
        var obj = {
            a:1,
            b:2
        };
    
        var p1 = new Proxy(obj,{
            get(obj,attr){           //当属性值访问时触发
              console.log(obj,attr)
              return obj[attr];
            },
            set(obj,attr,value){     //当属性值修改时触发
              console.log(obj,attr,value);
              obj[attr] = value;
            }  
        })
        console.log(p1.b);  // 2
        p1.a = 10;
        console.log(p1.a);  // 10
        // 监控对象的变化,一旦发生变化就会触发回调函数
        //  无效
        console.log(Object.keys(obj));
        console.log(Reflect.ownKeys(obj));
    

    相关文章

      网友评论

        本文标题:ES6之对象扩展

        本文链接:https://www.haomeiwen.com/subject/uswfnttx.html