成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

[javascript]symbol是什么?

Rindia / 2024人閱讀

摘要:是中一種新的數(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ì)外操作的屬性。

枚舉Symbol

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

// 使用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

相關(guān)文章

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

    摘要:的碼點(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)筆記以及感悟,完...

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

    摘要:的碼點(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)筆記以及感悟,完...

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

    摘要:的碼點(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)筆記以及感悟,完...

    zlyBear 評(píng)論0 收藏0
  • JavaScript什么要有 Symbol 類(lèi)型

    摘要:也有類(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í)。 但是,...

    lemanli 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<