es6-对象扩展

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/grapelove01/article/details/82752424

函数新增特性

  • 简洁表示法
  • 属性表达式
  • 扩展运算符
  • Object新增方法

简介表示法

属性简写

{
  // 简洁表示法
  let o=1;
  let k=2;
  let es5={
    o:o, 
    k:k
  };
  let es6={
    o, // 属性简写
    k
  };
  console.log(es5,es6); // {o: 1, k: 2} {o: 1, k: 2}
}

方法简写

{
 let es5_method={
    hello:function(){
      console.log('hello');
    }
  };
  let es6_method={
    hello(){ // 方法简写
      console.log('hello');
    }
  };
  console.log(es5_method.hello(),es6_method.hello()); // hello hello
}

属性表达式

{
  let a='b';
  let es5_obj={
    a:'c',
    b:'c'
  };

  let es6_obj={
    [a]:'c' // key 值,可以是表达式或变量
  }

  console.log(es5_obj,es6_obj); // {a: "c", b: "c"} {b: "c"}

}

扩展运算符

babel 支持不友好,暂时没法用

{
  let {a,b,...c}={a:'test',b:'kill',c:'ddd',d:'ccc'};
  c={ // c 的解析结果
    c:'ddd',
    d:'ccc'
  }
}

Object新增方法

判断是否相等

Object.is() 与 === 一样

{
  console.log('字符串',Object.is('abc','abc'),'abc'==='abc'); // true true, 
  console.log('数组',Object.is([],[]),[]===[]); // false false,引用地址不同
}

拷贝

Object.assign(target, ...sources),对象拷贝

注意

  • 拷贝属性有限制,浅拷贝
  • 拷贝的只有自身对象的属性,不拷贝不可枚举的属性
{
  console.log('拷贝',Object.assign({a:'a'},{b:'b'})); // {a: "a", b: "b"}
}

遍历

Object.entries() 配合遍历使用

{
  // Object.entries() 配合遍历使用
  let test={k:123,o:456};
  for(let [key,value] of Object.entries(test)){
    console.log([key,value]); // ["k", 123] ["o", 456]
  }
}

猜你喜欢

转载自blog.csdn.net/grapelove01/article/details/82752424