摘要:是中一種新的數(shù)據(jù)類(lèi)型?;蛟S某天遇到什么需求可以派上用場(chǎng)。它是唯一的每個(gè)實(shí)例都是唯一的。對(duì)象屬性正因?yàn)樗俏ㄒ坏?。他主要是可以通過(guò)它的唯一性代替常量。原來(lái)情況可以改用或者等,類(lèi)似的情況。
symbol
symbol是ES6中一種新的數(shù)據(jù)類(lèi)型。平時(shí)很少會(huì)用到,今天特意了解一下?;蛟S某天遇到什么需求可以派上用場(chǎng)。
首先它是一種新的數(shù)據(jù)類(lèi)型使用方法
let e = Symbol()
這樣便創(chuàng)建了一個(gè)Symbol實(shí)例。如果我們用typeof來(lái)檢查它,會(huì)返回symbol,一個(gè)新的類(lèi)型。
typeof e //symbol它是唯一的
每個(gè)symbol實(shí)例都是唯一的。
let s1 = Symbol() let s2 = Symbol("another symbol") let s3 = Symbol("another symbol") s1 === s2 // false s2 === s3 // false對(duì)象屬性
正因?yàn)樗俏ㄒ坏?。我們可以把他做?duì)象的特定屬性。
const PROP_NAME = Symbol() const PROP_AGE = Symbol() let obj = { [PROP_NAME]: "屬性" [PROP_AGE] = 18 } obj[PROP_NAME] // "屬性" obj[PROP_AGE] // 18對(duì)象中的Symbol不能普通方法列舉
Symbol類(lèi)型的key是不能通過(guò)Object.keys()或者for...in來(lái)枚舉的,它未被包含在對(duì)象自身的屬性名集合(property names)之中。
let obj = { [Symbol("name")]: "name", age: 18, title: "Engineer" } Object.keys(obj) // ["age", "title"] for (let p in obj) { console.log(p) // 分別會(huì)輸出:"age" 和 "title" } Object.getOwnPropertyNames(obj) // ["age", "title"]
所以可以用Symbol存放一些不需要對(duì)外操作的屬性。
枚舉SymbolSymbol有自己特定的枚舉方法。
// 使用Object的API Object.getOwnPropertySymbols(obj) // [Symbol(name)] // 使用新增的反射API Reflect.ownKeys(obj) // [Symbol(name), "age", "title"]場(chǎng)景
按他的特性來(lái)說(shuō)能我遇到過(guò)需要Symbol用場(chǎng)景確實(shí)不是很多。他主要是可以通過(guò)它的唯一性代替常量。
// 原來(lái)情況 export const FECTH_PROJECT_ROOT = "fetchProjectRoot" export const DELETE_FILE = "deleteFile" let obj={ [FECTH_PROJECT_ROOT]:{ }, [DELETE_FILE]:{ } }
可以改用Symbol
export const FECTH_PROJECT_ROOT = Symbol(); export const DELETE_FILE = Symbol(); let obj={ [FECTH_PROJECT_ROOT]:{ }, [DELETE_FILE]:{ } }
或者switch等,類(lèi)似的情況。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/105581.html
摘要:的碼點(diǎn)被稱(chēng)為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來(lái)做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完...
摘要:的碼點(diǎn)被稱(chēng)為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來(lái)做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完...
摘要:的碼點(diǎn)被稱(chēng)為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來(lái)做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完...
摘要:也有類(lèi)似的概念,它是根據(jù)傳遞的數(shù)據(jù)類(lèi)型推斷的。這個(gè)特性的名稱(chēng)被稱(chēng)為私有字段,雖然這不會(huì)使所有對(duì)象受益,但會(huì)使類(lèi)實(shí)例的對(duì)象受益。警告中有一個(gè)功能會(huì)破壞代理的隱私。 showImg(https://segmentfault.com/img/bVbpL6y?w=800&h=456); Symbols 是 ES6 引入了一個(gè)新的數(shù)據(jù)類(lèi)型 ,它為 JS 帶來(lái)了一些好處,尤其是對(duì)象屬性時(shí)。 但是,...
閱讀 3289·2023-04-26 01:39
閱讀 3434·2023-04-25 18:09
閱讀 1695·2021-10-08 10:05
閱讀 3316·2021-09-22 15:45
閱讀 2934·2019-08-30 15:55
閱讀 2469·2019-08-30 15:54
閱讀 3227·2019-08-30 15:53
閱讀 1392·2019-08-29 12:32