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

資訊專欄INFORMATION COLUMN

ES6的Symbol數(shù)據類型的學習

SimpleTriangle / 455人閱讀

摘要:新的原始數(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...infor...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

相關文章

  • ES6學習筆記之Symbol

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

    leo108 評論0 收藏0
  • ES6學習總結(一)

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

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

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

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

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

    joyvw 評論0 收藏0

發(fā)表評論

0條評論

SimpleTriangle

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<