zoukankan      html  css  js  c++  java
  • ES6学习笔记--属性名表达式

    1.直接用标识符作为属性名:

    obj.foo = true

    2.用表达式作为属性名:

    obj['a'+'bc'] = 123
    
    //相当于
    
    obj['abc'] = 123

    3.ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。

    let key = 'foo';
    let obj = {
        [key]: true,
        ['a'+'bc']: 123
    };
    var lastWord = 'last word';
    
    var a = {
      'first word': 'hello',
      [lastWord]: 'world'
    };
    
    a['first word'] // "hello"
    a[lastWord] // "world"
    a['last word'] // "world"

    4.表达式用来定义方法名

    let obj = {
        ['say' + 'Something']() {
            return 'hello word';
        }
    };
    
    obj.saySomething(); // hello word

    5.注意,属性名表达式与简洁表示法,不能同时使用,会报错。

    // 会报错
    var foo = 'bar';
    var bar = 'abc';
    var baz = {[foo]};
    
    //正确写法:
    var foo = 'bar';
    var baz = {[foo]: 'abc'};

    6.注意,属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object],这一点要特别小心。

    const keyA = {a: 1};
    const keyB = {b: 2};
    
    const myObject = {
        [keyA]: 'valueA',
        [keyB]: 'valueB'
    };
    
    myObject // Object {[object Object]: "valueB"}

    上面代码中,[keyA][keyB]得到的都是[object Object],所以[keyB]会把[keyA]覆盖掉,而myObject最后只有一个[object Object]属性。

     

  • 相关阅读:
    Hibernate 中 get()和load()的区别
    Socket网络编程
    经典
    jsp的九大内置对象及EL表达式的隐含对象
    TreeSet
    centos7.4安装npm
    centos7.4中安装docker
    centos7安装nginx
    centos中安装基础环境
    在docker中安装mysql
  • 原文地址:https://www.cnblogs.com/garfieldzhong/p/6743551.html
Copyright © 2011-2022 走看看