国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6的Symbol數(shù)據(jù)類型的學(xué)習(xí)

SimpleTriangle / 462人閱讀

摘要:新的原始數(shù)據(jù)類型,表示獨(dú)一無二的值其他的數(shù)據(jù)類型包括基本知識注意不能使用,因?yàn)樗皇菍ο髤?shù)是一個(gè)對象,就會調(diào)用該對象的方法,然后才生成一個(gè)值值不可以運(yùn)算可以顯式轉(zhuǎn)為字符串可以轉(zhuǎn)為布爾值,但是不能轉(zhuǎn)為數(shù)值可以防止某一個(gè)鍵被改寫或覆蓋使用值定

新的原始數(shù)據(jù)類型Symbol,表示獨(dú)一無二的值
其他的數(shù)據(jù)類型包括undefined,null,string,number,boolean,object

基本知識
let s = Symbol() // 注意不能使用new,因?yàn)樗皇菍ο?typeof s // "symbol"


let s1 = Symbol("foo")
s1 // Symbol(foo)

// Symbol參數(shù)是一個(gè)對象,就會調(diào)用該對象的toString()方法,然后才生成一個(gè)Symbol值
const obj = {
    toString() {
        return "abc"
    }
}
const sym = Symbol(obj)
sym // Symbol(abc)

let s2 = Symbol("foo")
s1 === s2 // false

// Symbol值不可以運(yùn)算
console.log("your symbol " + s1) // TypeError

// Symbol可以顯式轉(zhuǎn)為字符串
String(s1) 
sym.toString() // "Symbol(foo)"

// Symbol可以轉(zhuǎn)為布爾值,但是不能轉(zhuǎn)為數(shù)值
Boolean(s) // true
!s // false
Number(s) // TypeError

可以防止某一個(gè)鍵被改寫或覆蓋

使用Symbol值定義屬性時(shí),Symbol值必須放在方括號之中。

let mySym = Symbol()
let a = {}
a[mySym] = "hello"

let a = {
    [mySym]: "hello"
}

// 注意點(diǎn)運(yùn)算符,此時(shí)mySym是字符串
a.mySym = "hello"
a[mySym] // undefined
a["mySym"] // "hello"

屬性名的遍歷
Symbol作為屬性名,不會出現(xiàn)在for...infor...of循環(huán)中,也不會被Object.keys()Object.getOwnPropertyNames()JSON.stringify()返回,有一個(gè)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)]

還有一個(gè)全新的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") // 不會每次調(diào)用就返回一個(gè)新的Symbol類型的值
let s2 = Symbol.for("bar") // 調(diào)用30次,每次都返回同一個(gè)Symbol值,但是Symbol()會返回30個(gè)不同的Symbol值
s1 === s2 //true

// 返回一個(gè)已登記的Symbol類型值的key
let s1 = Symbol.for("foo")
Symbol.keyFor(s1) // "foo"

let s2 = Symbol("foo")
Symbol.keyFor(s2) // undefined

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84903.html

相關(guān)文章

  • ES6學(xué)習(xí)筆記之Symbol

    摘要:前端技術(shù)日新月異,不斷有新技術(shù)出現(xiàn),我們就需要不斷地學(xué)習(xí)新知識,雖然已經(jīng)提出很久了,但是最近我才有時(shí)間靜下心來好好學(xué)習(xí)一下里面提出的新規(guī)則。 前端技術(shù)日新月異,不斷有新技術(shù)出現(xiàn),我們就需要不斷地學(xué)習(xí)新知識,雖然ES6已經(jīng)提出很久了,但是最近我才有時(shí)間靜下心來好好學(xué)習(xí)一下里面提出的新規(guī)則。今天總結(jié)下ES6提出的這個(gè)新的原始數(shù)據(jù)類型--Symbol。 為啥需要Symbol 一個(gè)新規(guī)則的提出...

    leo108 評論0 收藏0
  • ES6學(xué)習(xí)總結(jié)(一)

    摘要:可以通過調(diào)用方法將創(chuàng)建一個(gè)新的類型的值,這個(gè)值獨(dú)一無二,不與任何值相等。還可以使可擴(kuò)展,在中,表達(dá)式被標(biāo)準(zhǔn)化為構(gòu)造函數(shù)的一個(gè)方法,這意味著它是可擴(kuò)展的。 前端發(fā)展的太快了,快到ES6,ES7出來之后,今年已經(jīng)是ES8了,但是縱然前端發(fā)展很快,我們除了馬不停蹄的學(xué)習(xí)新的技術(shù)之外,也要沉下心來,好好的潛心磨礪自己,本文是整理了自己學(xué)習(xí)ES6之后相關(guān)的知識要點(diǎn),寄希望于書之于筆,一來自己可以...

    _ipo 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(六)--JavaScript類型有哪些你不知道細(xì)節(jié)?

    摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會報(bào)錯(cuò)。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完...

    Lsnsh 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(六)--JavaScript類型有哪些你不知道細(xì)節(jié)?

    摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會報(bào)錯(cuò)。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完...

    joyvw 評論0 收藏0

發(fā)表評論

0條評論

SimpleTriangle

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<