国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会泽县| 万盛区| 望城县| 林甸县| 呼和浩特市| 从化市| 石家庄市| 灌南县| 江油市| 汉沽区| 聂荣县| 榕江县| 葫芦岛市| 北碚区| 井冈山市| 河南省| 舞钢市| 平舆县| 浦县| 新晃| 遂昌县| 镇远县| 岫岩| 长沙市| 长丰县| 黎川县| 班玛县| 临海市| 东莞市| 昆明市| 同江市| 宁化县| 阿鲁科尔沁旗| 潼关县| 沭阳县| 内黄县| 横山县| 永胜县| 威信县| 大埔区| 海南省|