官术网_书友最值得收藏!

3.3.6 Symbol

Symbol是ECMAScript 2015新引入的原始類型。Symbol值有一個重要特征,那就是每一個Symbol值都是唯一的且不可改變的。Symbol值的主要應用場景是作為對象的屬性名。

Symbol的設計初衷是用來實現對象的私有屬性,但實際上Symbol并不能實現真正意義上的私有屬性。JavaScript還是提供了一些方法允許程序去訪問Symbol屬性。雖然Symbol無法實現絕對的私有屬性,但是它確實有助于緩解屬性命名沖突問題。

3.3.6.1 Symbol()

JavaScript提供了一個全局的“Symbol()”函數來創建Symbol類型的值。我們可以將“Symbol()”函數想象成GUID(全局唯一標識符)的生成器,每次調用“Symbol()”函數都會生成一個完全不同的Symbol值。示例如下:


01 const sym = Symbol();
02 const obj = { [sym]: 'some value' };
03 obj[sym]; // 'some value'

3.3.6.2 Well-Known Symbol

JavaScript內置了一些所謂的Well-Known Symbol常量。這些Symbol常量用作對象屬性名,它們的功能是定制對象的特定行為。在ECMAScript 2015規范中一共定義了11個Well-Known Symbol常量,如表3-1所示。

表3-1 Well-Known Symbol常量

主站蜘蛛池模板: 浮梁县| 西华县| 铁岭县| 嘉义县| 聊城市| 盈江县| 丘北县| 商河县| 溧水县| 梧州市| 灌云县| 清水县| 池州市| 平顺县| 天津市| 白朗县| 海原县| 肥东县| 吉水县| 南和县| 靖安县| 镇江市| 芒康县| 叙永县| 海晏县| 阳山县| 科尔| 阿拉尔市| 西乌珠穆沁旗| 台湾省| 新田县| 汪清县| 观塘区| 正宁县| 石首市| 奉节县| 进贤县| 叶城县| 鸡东县| 介休市| 佛坪县|