symbol

·  阅读 158

symbol 在ES6中引入,是一种基本数据类型 (primitive data type)。
功能类似于一种标识唯一性的ID。

语法

Symbol([description])
参数 description 可选,字符串类型。

const sym = Symbol("foo")
typeof sym     // "symbol"
复制代码

所有 Symbols 继承自 Symbol.prototype.

特性

  1. Symbols 在 for...in 迭代中不可枚举。
  2. Object.getOwnPropertyNames() 不会返回对象的 symbol 属性;
  3. Object.keys() 不会返回对象的 symbol 属性;
  4. Object.getOwnPropertySymbols() 可以获取对象的 symbol 属性;
    var obj = {}
    obj[Symbol("a")] = "a"
    obj[Symbol.for("b")] = "b"
    obj["c"] = "c"
    obj.d = "d"
    
    for (var i in obj) {
      console.log(i) // logs "c" and "d"
    }
    console.log(Object.getOwnPropertyNames(obj)) // (2) ["c", "d"]
    console.log(Object.keys(obj))  // (2) ["c", "d"]
    console.log(Object.getOwnPropertySymbols(obj)) // (2) [Symbol(a), Symbol(b)]
    复制代码
  5. JSON.stringify() 时, symbol 属性会被忽略;
    JSON.stringify({[Symbol("foo")]: "foo"}); // '{}'
    复制代码

参考:

Symbol - MDN

分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改