ES6——Symbol

Symbol的使用

是什么?

Symbol是ES6中新增的一個(gè)基本數(shù)據(jù)類(lèi)型,翻譯為符號(hào)。

為什么?

在ES6之前,對(duì)象的屬性名都是字符串形式,那么很容易造成屬性名的沖突;

  • 如原來(lái)有一個(gè)對(duì)象,我們希望在其中添加一個(gè)新的屬性和值,但是我們?cè)诓淮_定它原來(lái)內(nèi)部有什么內(nèi)容的情況下,很容易造成沖突,從而覆蓋掉它內(nèi)的某個(gè)屬性;
  • 如仿照實(shí)現(xiàn)apply、call、bind實(shí)現(xiàn)時(shí),我們有給其中添加一個(gè)fn屬性,那么如果它內(nèi)部原來(lái)已經(jīng)有了fn屬性了
    呢?
  • 比如開(kāi)發(fā)中我們使用混入,那么混入中出現(xiàn)了同名的屬性,必然有一個(gè)會(huì)被覆蓋掉;

Symbol就是為了解決上面的問(wèn)題,用來(lái)生成一個(gè)獨(dú)一無(wú)二的值。

  • Symbol值是通過(guò)Symbol函數(shù)來(lái)生成的,生成后可以作為屬性名;也就是在ES6中,對(duì)象的屬性名可以使用字符串,也可以使用Symbol值;
  • Symbol即使多次創(chuàng)建值,它們也是不同的:Symbol函數(shù)執(zhí)行后每次創(chuàng)建出來(lái)的值都是獨(dú)一無(wú)二的;
  • 可以在創(chuàng)建Symbol值的時(shí)候傳入一個(gè)描述description:這個(gè)是ES2019(ES10)新增的特性;

使用示例

image.png

image.png

使用symbol創(chuàng)建相同的值

使用Symbol.for方法來(lái)做到這一點(diǎn);
并且我們可以通過(guò)Symbol.keyFor方法來(lái)獲取對(duì)應(yīng)的key;


image.png
?著作權(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)容

  • 1.數(shù)據(jù)類(lèi)型Symbol 1.1 理解Symbol 1.1.1為什么用Symbol ES5里面對(duì)象的屬性名都是字...
    心存美好閱讀 354評(píng)論 0 1
  • 1、為什么添加Symbol基本類(lèi)型 雖然學(xué)習(xí)ES6一段時(shí)間了,但是由于工作中沒(méi)有使用到,對(duì)Symbol數(shù)據(jù)類(lèi)型一直...
    xinranlin閱讀 444評(píng)論 0 0
  • 1.數(shù)據(jù)類(lèi)型Symbol 1.1 理解Symbol 1.1.1為什么用Symbol ES5里面對(duì)象的屬性名都是字...
    時(shí)光如劍閱讀 746評(píng)論 0 4
  • 基礎(chǔ)數(shù)據(jù)類(lèi)型 可通過(guò)調(diào)用Symbol()函數(shù)來(lái)創(chuàng)建一個(gè)Symbol實(shí)例: 每個(gè)Symbol實(shí)例都是唯一的 場(chǎng)景1:...
    勇敢的小拽馬閱讀 415評(píng)論 1 2
  • 9 Symbol #9.1 介紹 ES6引入Symbol作為一種新的原始數(shù)據(jù)類(lèi)型,表示獨(dú)一無(wú)二的值,主要是為了防止...
    Daeeman閱讀 261評(píng)論 0 1

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