码迷,mamicode.com
首页 > 其他好文 > 详细

ECMAScript-----(五)对象的扩展

时间:2021-04-15 12:18:28      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:object   undefined   null   col   有一个   var   ==   字符串   覆盖   

属性名表达式

  1. 用途:允许表达式作为属性名、方法名,表达式需要写在方括号里
  2. 说明:
  3. 注意:属性名表达式时一个对象时,会自动将对象转为字符串
  4. 例子:
    let obj = {
      [propKey]: true,
      [a + bc]: 123
    };
    let obj = {
      [h + ello]() {
        return hi;
      }
    };
    obj.hello()
    //会自动将对象转为字符串
    //[keyA]和[keyB]得到的都是[object Object],所以[keyB]会把[keyA]覆盖掉,而myObject最后只有一个[object Object]属性。
    
    const keyA = {a: 1};
    const keyB = {b: 2};
    
    const myObject = {
      [keyA]: valueA,
      [keyB]: valueB
    };
    
    myObject // Object {[object Object]: "valueB"}

Object.assign(target,source1,source2,...)

  1. 用途:用于对象的合并
  2. 说明:
  3. 注意:
    • 参数需要是对象,非对象参数会自动转为对象
    • target参数为undefined或null时,会因无法转为对象而报错
    • source参数为undefined或null时,会因无法转为对象而被跳过,不会报错
    • Object.assign()是浅拷贝,拷贝的对象的引用;只拷贝自身属性,不拷贝不可枚举的属性;
  4. 例子:
    Object.assign(undefined) // 报错
    
    let obj = {a: 1};
    Object.assign(obj, undefined) === obj // true
    Object.assign(obj, null) === obj // true
    var v1 = abc;
    var v2 = true;
    var v3 = 10;
    
    var obj = Object.assign({}, v1, v2, v3);
    console.log(obj); // { "0": "a", "1": "b", "2": "c" }
    //因为只有字符串有可枚举属性

Object.keys()、Object.values()、Object.entries()

  1. 用途:
  2. 说明:Object.entries()可将对象转为真正的Map结构
  3. 注意:
  4. 例子:

     

ECMAScript-----(五)对象的扩展

标签:object   undefined   null   col   有一个   var   ==   字符串   覆盖   

原文地址:https://www.cnblogs.com/lftBlogs/p/14658747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!