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

資訊專欄INFORMATION COLUMN

[javascript]symbol是什么?

Rindia / 1937人閱讀

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

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存放一些不需要對外操作的屬性。

枚舉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等,類似的情況。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105581.html

相關文章

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

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

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

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

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

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

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

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

    lemanli 評論0 收藏0

發表評論

0條評論

Rindia

|高級講師

TA的文章

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