js中Symbol(..)

Symbol(..)

ES6 中新加入了一個基本數據類型 ——符號(Symbol)。符號是具有唯一性的特殊值(並 非絕對),用它來命名對象屬性不容易導致重名。該類型的引入主要源於 ES6 的一些特殊 構造,此外符號也可以自行定義。

符號可以用作屬性名,但無論是在代碼還是開發控制檯中都無法查看和訪問它的值,只會 顯示為諸如 Symbol(Symbol.create) 這樣的值。

ES6 中有一些預定義符號,以 Symbol 的靜態屬性形式出現,如 Symbol.create、Symbol. iterator 等,可以這樣來使用:

obj[Symbol.iterator] = function(){ /*..*/ };

我們可以使用 Symbol(..) 原生構造函數來自定義符號。但它比較特殊,不能帶 new 關鍵 字,否則會出錯:

js中Symbol(..)

雖然符號實際上並非私有屬性(通過 Object.getOwnPropertySymbols(..) 便可以公開獲得 對象中的所有符號),但它卻主要用於私有或特殊屬性。很多開發人員喜歡用它來替代有 下劃線(_)前綴的屬性,而下劃線前綴通常用於命名私有或特殊屬性。


分享到:


相關文章: