国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

ES6新特性之Symbol類型用法分析

2024-05-06 16:36:15
字體:
來源:轉載
供稿:網友

本文實例講述了ES6新特性之Symbol類型用法。分享給大家供大家參考,具體如下:

Symbol類型

1. 為了避免屬性名的沖突,ES6新增了Symbol類型。Symbol可以產生一個獨一無二的值

let s1 = Symbol('a');let s2 = Symbol('a');console.log(s1); //Symbol(a)console.log(typeof s1); //symbolconsole.log(s1 == s2); //false

2.Symbol用于屬性名。

var s1 = Symbol();var s2 = Symbol();var s3 = Symbol();var obj = {  [s1]: 'hi'};obj[s2] = 'ES6';Object.defineProperty(obj, s3, {  value: 'ES2015'});console.log(obj); //Object {Symbol(): "hi", Symbol(): "ES6", Symbol(): "ES2015"}console.log(obj.s1); //undefined -> 所以當用Symbol作為屬性名時候,不能用.運算符訪問屬性console.log(obj[s1]); //hiconsole.log(obj['s1']); //undefined

注意:Symbol作為屬性名,該屬性不會出現在 for...in...和 for...of... 循環中,也不會被 Object.keys(), Object.getOwnPropertyNames() 返回。Object.getOwnProertySymbols()返回一個數組,成員是當前對象的所有用作屬性名的symbol值。

2. Symbol.for() 接受一個字符串作為參數,然后搜索有沒有以該參數作為名稱的Symbol值,有就返回這個Symbol值,否則就新建并返回一個以該字符串為名稱的Symbol值

3. Symbol.keyFor()方法返回一個已經登記的Symbol類型值的key。

Symbol()方法生成一個Symbol類型時,沒有登記,所以每次調用Symbol(哪怕傳入相同的字符串)會返回不同的Symbol,但是Symbol.for()在生成Symbol時候進行了登記,每次再次調用時,都會先尋找是否有傳入相同參數的Symbol,故只有Symbol.for()產生的Symbol才能被Symbol.keyFor()找到。

let s1 = Symbol('a');let s2 = Symbol('a');let s3 = Symbol.for('b');let s4 = Symbol.for('b');let name1 = Symbol.keyFor(s1);let name3 = Symbol.keyFor(s3);console.log(s1 == s2); //falseconsole.log(s1 == s3); //falseconsole.log(s2 == s3); //falseconsole.log(s3 == s4); //trueconsole.log(name1); //undefinedconsole.log(name3); //b

希望本文所述對大家ECMAscript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西安市| 平凉市| 庆城县| 正蓝旗| 昌江| 潮州市| 敖汉旗| 浪卡子县| 铜川市| 沁源县| 隆子县| 哈密市| 嘉峪关市| 桦南县| 杭锦旗| 靖州| 大埔县| 清新县| 宜丰县| 新巴尔虎左旗| 容城县| 理塘县| 松原市| 盐津县| 砀山县| 芦山县| 栾城县| 曲阜市| 宜兴市| 太康县| 昆山市| 塔河县| 洞头县| 东至县| 客服| 望谟县| 太湖县| 拉孜县| 探索| 沂水县| 宜春市|