es6-对象扩展

函数新增特性

  • 简洁表示法
  • 属性表达式
  • 扩展运算符
  • 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]
  }
}

推荐阅读更多精彩内容

  • 1. 属性的简介表示法 ES6允许在对象之中,只写属性名,不写属性值。此时,属性值等于属性名所代表的变量。如果某方...
    sponing阅读 796评论 1 5
  • 一、对象属性的简洁写法1、属性简写 2、方法简写 二、属性名表达式在ES5中,定义对象的属性有两种方法 如果使用字...
    贵在随心阅读 5,635评论 0 4
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。 上面代码表明,ES6允许在对象之中,直接写...
    oWSQo阅读 351评论 0 0
  • 全域影视传媒团队创作影像故事的方式非常简单:全面理解您的营销目标,构建有洞察的视频策略,用我们专业的视频流程来产生...
    全域影视制作人刘海生阅读 367评论 0 0
  • func animateMyViews(viewToHide:UIView,viewToShow:UIView){...
    王荣swift阅读 84评论 0 0
  • “怎么回事啊?”妈妈问道。 “没事啊,就是失恋了,有点失恋的忧伤而已!”彬彬回答道,说完继续缩进被窝里。 妈妈瞪大...
    活火山宝宝阅读 72评论 0 0
  • 初中上完 考了个不差也不好的高中 最重要的是这个高中是住宿而且离家远 并不是故意这样做 如果你天天都听见你父母吵架...
    鱼赐阅读 309评论 0 1