作用
解决命名冲突
概述
1、一种新的原始数据类型symbol
2、表示独一无二的值
使用
1、let s = Symbol('abc');
2、let s1 = Symbol.for('abc');
Symbol和Symbol.for区别:
// 没有参数的情况
let s1 = Symbol();
let s2 = Symbol();
s1 === s2 // false
// 有参数的情况
let s1 = Symbol('foo');
let s2 = Symbol('foo');
s1 === s2 // false
//Symbol.for
let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');
s1 === s2 // true
取值
let o = Symbol.for('abc')
let obj1 = {
abc:'111',
[o]:'222'
}
1、Object.getOwnPropertySymbols(obj1) //只能拿到symbol,返回一个数组返回值[Symbol(abc)]
2、Reflect.ownKeys(obj1) //返回值["abc",Symbol(abc)]