Symbol

错误之处,欢迎指正。


1. 简介

符号常用于给对象设置私有属性,是ES6新增的数据类型。(StringNumberBooleanundefinednullArrayFunctionObjectSymbol

2. 普通符号

  1. 符号不具有字面量。
  2. 每次调用Symbol函数,得到的普通符号永远不会相等,就算是描述信息相同。
  3. 符号可以作为对象的属性名存在,称之为符号属性。
const name = Symbol('name');
const obj = {
    [name]: 'chris'  //计算属性名,表达式。
}
  1. 符号属性不可枚举。
const name = Symbol('name');
const obj = {
    age: 12,
    [name]: 'chris' //计算属性名,表达式。
}
for (const key in obj) {
    console.log(key); //age
}
console.log(Object.keys(obj));  //["age"]
console.log(Object.getOwnPropertySymbols(obj));  //[Symbol(name)]

3. 共享符号

const name = Symbol.for('name');
const name1 = Symbol.for('name');
console.log(name === name1);  //true

共享符号可通过创建全局变量的方式实现。

你可能感兴趣的:(Symbol)