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

属性名表达式

  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. 例子:

     

posted @ 2021-04-14 17:12  会转圈圈的哆瑞米  阅读(40)  评论(0编辑  收藏  举报