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