Symbol

1.概況:spa

  • 7種原始數據類型:String Number Boolean  Object Null undefined Symbol;
  • Symbol由於不是一個對象因此前面不能是用new 關鍵字,若是在Symbol裏面傳入的參數是一個對象的話,會先用toString()方法轉化爲字符串,而後再生成一個Symbol值
  • Symbol值不能與其餘類型的值進行運算,會報錯。Symbol值能夠顯式轉爲字符串。另外,Symbol值也能夠轉爲布爾值,可是不能轉爲數值。

2.Symbol 做爲屬性名code

  •   不能使用點運算符

3.遍歷循環 對象

  • Symbol 做爲屬性名,該屬性不會出如今for...infor...of循環中,也不會被Object.keys()Object.getOwnPropertyNames()JSON.stringify()返回。可是,它也不是私有屬性,有一個Object.getOwnPropertySymbols方法,能夠獲取指定對象的全部 Symbol 屬性名。
  • Reflect.ownKeys()返回全部類型的鍵名,包括常規鍵名和 Symbol 鍵名。

4.Symbol.for 和 Symbol.keyFor()
字符串

  1. Symbol.for()Symbol()這兩種寫法,都會生成新的Symbol。
  2. 它們的區別是,前者會被登記在全局環境中供搜索,後者不會。Symbol.for()不會每次調用就返回一個新的 Symbol 類型的值,而是會先檢查給定的key是否已經存在,若是不存在纔會新建一個值。好比,若是你調 用Symbol.for("cat")30次,每次都會返回同一個 Symbol 值,可是調用Symbol("cat")30次,會返回30個不一樣的Symbol值。
  3. Symbol.keyFor方法返回一個已登記的 Symbol 類型值的key
  4. 須要注意的是,Symbol.for爲Symbol值登記的名字,是全局環境的,能夠在不一樣的 iframe 或 service worker 中取到同一個值。

5.get

相關文章
相關標籤/搜索