es6之symbol資料型別
阿新 • • 發佈:2020-09-04
1、六大資料型別
String字串型別、Number數字型別、Object物件型別、Boolean布林值型別、Null空值、Undefined 未定義
symbol出現原因:
解決物件的屬性名衝突
使用:
1 // 定義一個symbol型別的變數 2 let symbol = Symbol(); 3 console.log(symbol); 4 console.log(typeof symbol); //symbol 型別
特點:任何一個Symbol定義的都是獨一無二的。
2、API
1、獲取Symbol定義的屬性 Object.getOwnPropertySymbol()
1 console.log(Object.getOwnPropertySymbols(Person)); //[Symbol(name)]
2、獲取全部屬性 Reflect.ownKeys() ;
3、Symbol.for()建立的時候會把Symbol的值放到全域性環境中,供以後的Symbol使用。
4、Symbol.keyFor() 搜尋全域性中是否有Symbol.for定義的變數 有的話拿過來用,沒有重新定義
1 <script> 2 let name = Symbol('咱這是名字的描述'); 3 let Person = { 4name: '名字普通', 5 [name]: '名字Symbol定義', 6 } 7 8 // 獲取全部的屬性 9 console.log(Reflect.ownKeys(Person)); //["name", Symbol(咱這是名字的描述)] 10 // Symbol.for(); 在建立的時候會把symbol的值登記在全域性環境中,供以後Symbol.for()來搜尋 11 let name1 = Symbol.for('name'); 12 let name2 = Symbol.for('name');13 console.log(name1 === name2); //true 14 15 // Symbol.keyFor(); 搜尋全域性中是否有Symbol.for定義的變數,如果有返回 如果沒有返回undefined 16 console.log(Symbol.keyFor(name1)); //name 17 18 console.log(Symbol.keyFor(name)); //undefined 19 20 </script>