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