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