Symbol是新增的一種資料類型,它用于生成唯一的标志
Symbol執行個體
執行個體一個Symbol:
其中括号内寫的是對這個變量的描述
簡單應用
比如你在班級裡,可能有兩個人都叫李狗蛋,用一個對象來記錄他們的分數:
const students = {
'王建國' : { Chinese: 78, English: 65, math: 82 },
'李狗蛋' : { Chinese: 84, English: 56, math: 63 },
'李狗蛋' : { Chinese: 43, English: 55, math: 71 },
}
對其進行列印,隻會得到一個李狗蛋的成績:

這個問題就可以用Symbol來解決:
const students = {
[Symbol('王建國')] : { Chinese: 78, English: 65, math: 82 },
[Symbol('李狗蛋')] : { Chinese: 84, English: 56, math: 63 },
[Symbol('李狗蛋')] : { Chinese: 43, English: 55, math: 71 },
}
注意
1️⃣ 在對象中定義屬性名時,像上面的例子一樣,需要使用計算屬性( […] )的方式來定義
2️⃣ 對象的屬性名為Symbol定義的不能周遊(比如不能使用for in循環)
可以使用 Object.getOwnPropertySymbols() 方法,該方法會傳回一個給定對象自身的所有 Symbol 屬性的數組:
const symStudents = Object.getOwnPropertySymbols(students);
console.log(symStudents);