摘要:的出現(xiàn)是因?yàn)闆](méi)有可以用來(lái)表示唯一的標(biāo)識(shí)符,所以從根本上防止屬性名的沖突,所以引入了。所以對(duì)象的屬性名可以有兩種類(lèi)型,一種是通常的字符串,另一種是新增的類(lèi)型。而且值不能與其他類(lèi)型的值進(jìn)行運(yùn)算。
Symbol的出現(xiàn)是因?yàn)闆](méi)有可以用來(lái)表示唯一的標(biāo)識(shí)符,所以從根本上防止屬性名的沖突,所以引入了Symbol。所以對(duì)象的屬性名可以有兩種類(lèi)型,一種是通常的字符串,另一種是新增的Symbol類(lèi)型。
Symbol是一種新的原始數(shù)據(jù)類(lèi)型,用Symbol函數(shù)生成,用typeof運(yùn)算符的結(jié)果是"symbol"。它是一種原始數(shù)據(jù)類(lèi)型,不是對(duì)象,所以Symbol函數(shù)前不能用new命令。而且Symbol值不能與其他類(lèi)型的值進(jìn)行運(yùn)算。
// 沒(méi)有參數(shù)的情況 var s1 = Symbol(); var s2 = Symbol(); s1 === s2 // false // 有參數(shù)的情況 var s1 = Symbol("foo"); var s2 = Symbol("foo"); s1 === s2 // false
當(dāng)Symbol值作為對(duì)象屬性名時(shí),不能用點(diǎn)運(yùn)算符
var mySymbol = Symbol(); var a = {}; a.mySymbol = "Hello!"; a[mySymbol] // undefined a["mySymbol"] // "Hello!"
Symbol作為屬性名,是不會(huì)被for...in,for..of,Object.keys(), Object.getOwnPropertyNames,JSON.stringify()解析的,但是它有一個(gè)私有屬性: Object.getOwnPropertySymbols,這個(gè)可以獲取Symbol的屬性名。另外Reflect.ownKeys 這個(gè)方法可以獲取所有類(lèi)型的屬性名。
Symbol的方法Symbol.for():可以使用同一個(gè)symbol值,它接受一個(gè)字符串作為參數(shù),然后搜索有沒(méi)有以該參數(shù)作為名稱的Symbol值。
var s1 = Symbol.for("foo"); var s2 = Symbol.for("foo"); s1 === s2 // true Symbol.for("bar") === Symbol.for("bar") // true Symbol("bar") === Symbol("bar") // false
Symbol.keyFor(): 返回一個(gè)已經(jīng)登記的Symbol類(lèi)型的key值
hasInstance
isConcatSpreadable
species
match
replace
search
split
iterator
toPrimitive
unscopables
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82009.html
摘要:迭代器在原有的數(shù)據(jù)結(jié)構(gòu)類(lèi)型上新增了兩種類(lèi)型,我們?cè)谑褂玫臅r(shí)候還可以通過(guò)自由組合的形式使用這些結(jié)構(gòu)類(lèi)型達(dá)到自己想要的數(shù)據(jù)結(jié)構(gòu),這就需要一種統(tǒng)一的接口機(jī)制供我們調(diào)用處理不同的數(shù)據(jù)結(jié)構(gòu)。 引言 萬(wàn)丈高樓平地起,欲練此功,必先打好基本功: ) 在了解 ES6 新增的變量類(lèi)型前,我們必須先知道 JavaScript 在ES6之前,有如下六種基本數(shù)據(jù)類(lèi)型:Null、Undefined、Number...
摘要:前端技術(shù)日新月異,不斷有新技術(shù)出現(xiàn),我們就需要不斷地學(xué)習(xí)新知識(shí),雖然已經(jīng)提出很久了,但是最近我才有時(shí)間靜下心來(lái)好好學(xué)習(xí)一下里面提出的新規(guī)則。 前端技術(shù)日新月異,不斷有新技術(shù)出現(xiàn),我們就需要不斷地學(xué)習(xí)新知識(shí),雖然ES6已經(jīng)提出很久了,但是最近我才有時(shí)間靜下心來(lái)好好學(xué)習(xí)一下里面提出的新規(guī)則。今天總結(jié)下ES6提出的這個(gè)新的原始數(shù)據(jù)類(lèi)型--Symbol。 為啥需要Symbol 一個(gè)新規(guī)則的提出...
摘要:但是,前來(lái)提到的個(gè)方法都不支持屬性,為了保持原有的功能,新增了一個(gè)方法來(lái)檢索類(lèi)型的屬性接下來(lái)看一下式例以上,就是關(guān)于的基本使用方法。 ES6新增了一個(gè)基本數(shù)據(jù)類(lèi)型:Symbol,至此ECMAScript的基本數(shù)據(jù)類(lèi)型就有了6種:字符串,數(shù)字,布爾,null,undefined,Symbol。關(guān)于Symbol,我打算寫(xiě)2篇文章來(lái)提取一下比較重要的知識(shí)點(diǎn),這篇是第一篇,主要講Symbol的...
摘要:中的獲取針對(duì)這個(gè),添加了方法。這個(gè)和其他的一些屬性不同,他是默認(rèn)不存在一些標(biāo)準(zhǔn)對(duì)象上。進(jìn)行類(lèi)型轉(zhuǎn)換的時(shí)候,會(huì)被強(qiáng)制的調(diào)用一個(gè)參數(shù),在規(guī)范中這個(gè)參數(shù)被稱之為這個(gè)參數(shù)是三個(gè)值其中的一個(gè)。來(lái)上面的類(lèi)型,你可以試試。 symbol是es6出的一種類(lèi)型,他也是屬于原始類(lèi)型的范疇(string, number, boolean, null, undefined, symbol) basic le...
摘要:概述的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。這就是引入的原因。它是語(yǔ)言的第七種數(shù)據(jù)類(lèi)型,前六種是布爾值字符串?dāng)?shù)值對(duì)象。它將創(chuàng)建唯一的標(biāo)識(shí)符,并將其存儲(chǔ)在中。同理,在對(duì)象的內(nèi)部,使用值定義屬性時(shí),值必須放在方括號(hào)之中。 概述 ES5 的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。比如,你使用了一個(gè)他人提供的對(duì)象,但又想為這個(gè)對(duì)象添加新的方法(mixin 模式),新方法的名字就有...
摘要:先搜索全局符號(hào)注冊(cè)表,如果已有,則返回這個(gè)已存在的符號(hào)值否則,會(huì)創(chuàng)建一個(gè)新的符號(hào)值,并使用該鍵值將其記錄到全局符號(hào)注冊(cè)表中,然后返回這個(gè)新的符號(hào)值。 主要知識(shí)點(diǎn):創(chuàng)建符號(hào)值、使用符號(hào)值、共享符號(hào)值、符號(hào)值轉(zhuǎn)換。檢索符號(hào)值屬性以及知名符號(hào) showImg(https://segmentfault.com/img/bVbfWhK?w=1203&h=633); 《深入理解ES6》筆記 目錄 ...
閱讀 1697·2021-10-09 09:44
閱讀 3263·2021-09-27 13:36
閱讀 1520·2021-09-22 15:33
閱讀 1274·2021-09-22 15:23
閱讀 1159·2021-09-06 15:02
閱讀 1695·2019-08-29 16:14
閱讀 2901·2019-08-29 15:26
閱讀 2408·2019-08-28 18:08