ES6之对象扩展

关键词:对象扩展

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之对象扩展)