showModalBottomSheet setState 無法更新ui和高度設定問題
阿新 • • 發佈:2021-11-04
Symbol是什麼
- symbol是ES6中新增的一種基本資料型別
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) ]