1. 程式人生 > 實用技巧 >es6之symbol資料型別

es6之symbol資料型別

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 = {
 4
name: '名字普通', 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>