摘要:新的原始數(shù)據類型,表示獨一無二的值其他的數(shù)據類型包括基本知識注意不能使用,因為它不是對象參數(shù)是一個對象,就會調用該對象的方法,然后才生成一個值值不可以運算可以顯式轉為字符串可以轉為布爾值,但是不能轉為數(shù)值可以防止某一個鍵被改寫或覆蓋使用值定
新的原始數(shù)據類型:Symbol,表示獨一無二的值
其他的數(shù)據類型包括undefined,null,string,number,boolean,object
let s = Symbol() // 注意不能使用new,因為它不是對象 typeof s // "symbol" let s1 = Symbol("foo") s1 // Symbol(foo) // Symbol參數(shù)是一個對象,就會調用該對象的toString()方法,然后才生成一個Symbol值 const obj = { toString() { return "abc" } } const sym = Symbol(obj) sym // Symbol(abc) let s2 = Symbol("foo") s1 === s2 // false // Symbol值不可以運算 console.log("your symbol " + s1) // TypeError // Symbol可以顯式轉為字符串 String(s1) sym.toString() // "Symbol(foo)" // Symbol可以轉為布爾值,但是不能轉為數(shù)值 Boolean(s) // true !s // false Number(s) // TypeError
可以防止某一個鍵被改寫或覆蓋
使用Symbol值定義屬性時,Symbol值必須放在方括號之中。
let mySym = Symbol() let a = {} a[mySym] = "hello" let a = { [mySym]: "hello" } // 注意點運算符,此時mySym是字符串 a.mySym = "hello" a[mySym] // undefined a["mySym"] // "hello"
屬性名的遍歷
Symbol作為屬性名,不會出現(xiàn)在for...in和for...of循環(huán)中,也不會被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回,有一個Object.getOwnPropertySymbols方法可以獲取Symbol屬性名
let obj = {} let foo = Symbol("foo") Object.defineProperty(obj, foo, { value: "foobar" }) for (let i in obj) { console.log(i) // 無輸出 } Object.getOwnPropertyNames(obj) // [] Object.getOwnPropertySymbols(obj) // [Symbol(foo)]
還有一個全新的APIReflect.ownKeys()可以返回所有類型的鍵名,包括常規(guī)鍵名和Symbol鍵名
let obj = { [Symbol("my_key")]: 1, enum: 2, nonEnum: 3 } Reflect.ownKeys(obj) // ["enum","nonEnum",Symbol(my_key)]
let s1 = Symbol.for("foo") // 不會每次調用就返回一個新的Symbol類型的值 let s2 = Symbol.for("bar") // 調用30次,每次都返回同一個Symbol值,但是Symbol()會返回30個不同的Symbol值 s1 === s2 //true // 返回一個已登記的Symbol類型值的key let s1 = Symbol.for("foo") Symbol.keyFor(s1) // "foo" let s2 = Symbol("foo") Symbol.keyFor(s2) // undefined
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84903.html
摘要:前端技術日新月異,不斷有新技術出現(xiàn),我們就需要不斷地學習新知識,雖然已經提出很久了,但是最近我才有時間靜下心來好好學習一下里面提出的新規(guī)則。 前端技術日新月異,不斷有新技術出現(xiàn),我們就需要不斷地學習新知識,雖然ES6已經提出很久了,但是最近我才有時間靜下心來好好學習一下里面提出的新規(guī)則。今天總結下ES6提出的這個新的原始數(shù)據類型--Symbol。 為啥需要Symbol 一個新規(guī)則的提出...
摘要:可以通過調用方法將創(chuàng)建一個新的類型的值,這個值獨一無二,不與任何值相等。還可以使可擴展,在中,表達式被標準化為構造函數(shù)的一個方法,這意味著它是可擴展的。 前端發(fā)展的太快了,快到ES6,ES7出來之后,今年已經是ES8了,但是縱然前端發(fā)展很快,我們除了馬不停蹄的學習新的技術之外,也要沉下心來,好好的潛心磨礪自己,本文是整理了自己學習ES6之后相關的知識要點,寄希望于書之于筆,一來自己可以...
摘要:的碼點被稱為基本字符區(qū)域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
摘要:的碼點被稱為基本字符區(qū)域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
閱讀 1207·2019-08-30 15:55
閱讀 954·2019-08-30 15:55
閱讀 2150·2019-08-30 15:44
閱讀 2879·2019-08-29 14:17
閱讀 1130·2019-08-29 12:45
閱讀 3301·2019-08-26 10:48
閱讀 3133·2019-08-23 18:18
閱讀 2599·2019-08-23 16:47