成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[javascript]symbol是什么?

Rindia / 1964人閱讀

摘要:是中一種新的數(shù)據(jù)類型。或許某天遇到什么需求可以派上用場。它是唯一的每個實例都是唯一的。對象屬性正因為他是唯一的。他主要是可以通過它的唯一性代替常量。原來情況可以改用或者等,類似的情況。

symbol

symbol是ES6中一種新的數(shù)據(jù)類型。平時很少會用到,今天特意了解一下?;蛟S某天遇到什么需求可以派上用場。

首先它是一種新的數(shù)據(jù)類型

使用方法

let e = Symbol()

這樣便創(chuàng)建了一個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存放一些不需要對外操作的屬性。

枚舉Symbol

Symbol有自己特定的枚舉方法。

// 使用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等,類似的情況。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105581.html

相關(guān)文章

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

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

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

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

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

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

    zlyBear 評論0 收藏0
  • JavaScript什么要有 Symbol 類型

    摘要:也有類似的概念,它是根據(jù)傳遞的數(shù)據(jù)類型推斷的。這個特性的名稱被稱為私有字段,雖然這不會使所有對象受益,但會使類實例的對象受益。警告中有一個功能會破壞代理的隱私。 showImg(https://segmentfault.com/img/bVbpL6y?w=800&h=456); Symbols 是 ES6 引入了一個新的數(shù)據(jù)類型 ,它為 JS 帶來了一些好處,尤其是對象屬性時。 但是,...

    lemanli 評論0 收藏0

發(fā)表評論

0條評論

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