1. 程式人生 > 資訊 >英偉達 RTX 2060 12GB 視訊記憶體版現身資料庫

英偉達 RTX 2060 12GB 視訊記憶體版現身資料庫

Symbol是什麼

  • symbolES6中新增的一種基本資料型別

Symbol的作用

  • 用於表示獨一無二的值

Symbol使用

let s = Symbol();
  • 生成一個獨一無二的值存放到變數s
  • 使用Symbol生成獨一無二的值時需要加(),但不能加new
  • 使用Symbol時可以新增一個標記,方便閱讀程式碼let s = Symbol('zhangsan'),標記僅方便閱讀程式碼,沒有其他意義
let name = Symbol('name'); // 建立一個Symbol的值
let obj = {
  [name]: 'zhangsan', // 將Symbol的值作為物件的屬性(key)
}
console.log(obj[name]); // zhangsan
  • 使用Symbol生成的值作為物件的屬性或方法的名稱時,一定要儲存下來,否則後續無法拿到內容
let obj = {
  [Symbol('name')]: 'zhangsan', // 這個值永遠無法拿到
}

console.log(obj[Symbol('name')]); // undefined
  • 使用Symbol生成的值作為物件的屬性或方法的名稱時,無法遍歷出來
let name = Symbol('name');
let obj = {
  [name]: 'zhangsan',
  age: 66
}
for (let key in obj) {
  console.log(obj[key]); // 66
}
console.log(Object.keys(obj)); // ['age']
  • 如果想知道一個物件中哪些值是Symbol的,需要通過Object.getOwnPropertySymbols函式獲取
let name = Symbol('name');
let obj = {
  [name]: 'zhangsan',
  age: 66
}
console.log(Object.getOwnPropertySymbols(obj)); // [ Symbol(name) ]