zoukankan      html  css  js  c++  java
  • JavaScript点运算符与方括号运算符

    今天在看es6的时候看到的Symbol部分

    const mySymbol = Symbol()
    const a = {}
    a.mySymbol = 'Hello!'
    console.log(a[mySymbol])
    console.log(a['mySymbol'])

     因为点运算符后面总是字符串,所以不会读取mySymbol作为标识名所指代的值,导致a的属性名实际上是一个字符串,而不是一个Symbol值,所以Symbol作为对象属性名的时候不能用点运算符

    let s = Symbol();
    let obj = {
        [s]: function(arg) { }
    };
    obj[s](123);
    //上面的代码中如果s不放在方括号中,该属性的键名就是字符串s,而不是s所代表的那个Symbol值,采用增强写法,上面的obj对象可以更简洁些
    let obj = {
        [s](arg) {  }
    }
     
    Sybmol类型还可以用于定义一组常量,保证这组常量的值都是不相等的
    const log = {}
    log.levels = {
      DEBUG: Symbol('debug'),
      INFO: Symbol('info'),
      WARN: Symbol('warn')
    }
    console.log(log.levels.DEBUG, 'debug message')
    console.log(log.levels.INFO, 'info message')

    另一个

    const COLOR_RED = Symbol()
    const COLOR_GREEN = Symbol()
    function getComplement(color) {
      switch (color) {
        case COLOR_RED:
          return COLOR_GREEN
        case COLOR_GREEN:
          return COLOR_RED
        default:
          throw new Error('Undefined color')
      }
    }
    //常量使用Symbol值最大的好处就是,其他任何值都不可能有相同的值了,Symbol值作为属性名时,该属性是公开属性

     ........................想他

  • 相关阅读:
    前后端分离
    分库分表之终极设计方案
    题解-CF1491
    题解-ARC113
    题解-CF578D LCS Again
    团队冲刺第二阶段5
    团队冲刺第二阶段4
    团队冲刺第二阶段3
    团队冲刺第二阶段2
    团队冲刺第二阶段1
  • 原文地址:https://www.cnblogs.com/vivin-echo/p/14066668.html
Copyright © 2011-2022 走看看