ES6中的新特性 Symbol

一開(kāi)始接觸Symbol的時(shí)候,以為這是在Javascript 中提供了一種Dictionary 的實(shí)現(xiàn)方式。

標(biāo)準(zhǔn)文檔解釋說(shuō)Symbol 是繼 6種基本數(shù)據(jù)類型:Undefined、Null、Boolean、String、Number、Object 后的第7種 基本類型, Symbol是一個(gè)不可變的數(shù)據(jù)類型,用來(lái)產(chǎn)生唯一的標(biāo)識(shí),但是卻無(wú)法直接訪問(wèn)這個(gè)標(biāo)識(shí).

Symbol的最基礎(chǔ)用法

var mySymbol = Symbol();

也可以為Symbol 創(chuàng)建描述

var mySymbol = Symbol("My Symbol");

Symbol的用途可以作為對(duì)象的屬性出現(xiàn), 并且由于Symbol的唯一性,不用擔(dān)心屬性會(huì)發(fā)生沖突

var o = {
       val: 10,
      [ Symbol("random") ]: "I'm a symbol",
  };    

但是必須提醒的是,Symbol在對(duì)象中會(huì)以特殊的方式存儲(chǔ), 所以下面的方式不可以獲取到symbol屬性

console.log(Object.getOwnPropertyNames(o)); // val

必須以這種方式

Object.getOwnPropertySymbols(o);

ES6有一個(gè)Symbol.iterator,能夠指定對(duì)象的默認(rèn)iterator:

var arr = [11,12,13];
var itr = arr[Symbol.iterator]();    
itr.next(); // { value: 11, done: false }  
itr.next(); // { value: 12, done: false }  
itr.next(); // { value: 13, done: false }   
itr.next(); // { value: undefined, done: true }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、ES6簡(jiǎn)介 ? 歷時(shí)將近6年的時(shí)間來(lái)制定的新 ECMAScript 標(biāo)準(zhǔn) ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,208評(píng)論 8 25
  • 1.概述 ES5的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。比如,你使用了一個(gè)他人提供的對(duì)象,但又想為這個(gè)對(duì)象...
    趙然228閱讀 880評(píng)論 2 10
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,333評(píng)論 6 13
  • 媽媽在睡覺(jué)... 我在陪姥姥聊天... 媽媽嫌姥姥嘮叨... 姥姥嫌?jì)寢層X(jué)多... 媽媽: 你怎么還不出門... ...
    9ea80b401870閱讀 345評(píng)論 0 0
  • 4月初參加了一期寫(xiě)作班,興致勃勃,原以為可以借此有質(zhì)的提升。 結(jié)果,一開(kāi)課,就陷在婆媳問(wèn)題、夫妻關(guān)系中,沒(méi)有心力再...
    鏘鏘滾閱讀 400評(píng)論 1 4

友情鏈接更多精彩內(nèi)容