錯誤之處掉房,歡迎指正。
1. 簡介
符號常用于給對象設置私有屬性慰丛,是ES6
新增的數(shù)據(jù)類型卓囚。(String
,Number
诅病,Boolean
哪亿,undefined
,null
贤笆,Array
蝇棉,Function
,Object
芥永,Symbol
)
2. 普通符號
- 符號不具有字面量篡殷。
- 每次調用
Symbol
函數(shù),得到的普通符號永遠不會相等埋涧,就算是描述信息相同板辽。 - 符號可以作為對象的屬性名存在,稱之為符號屬性棘催。
const name = Symbol('name');
const obj = {
[name]: 'chris' //計算屬性名劲弦,表達式。
}
- 符號屬性不可枚舉醇坝。
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
共享符號可通過創(chuàng)建全局變量的方式實現(xiàn)纲仍。