深入理解ES6 第6章 Symbol 符號

2021-10-01 19:38:05 字數 2477 閱讀 7932

let firstname =

symbol()

;let person =

;person[firstname]

="fly"

;//symbol是原始值,呼叫new symbol()會導致程式報錯

symbol函式接受可選引數,用於描述,不可用於屬性訪問。

let firstname =

symbol

("first name");

let person =

;person[firstname]

="nicholas"

;console.

log(

"first name"

in person)

;// false

console.

log(person[firstname]);

// "nicholas"

console.

log(firstname)

;// "symbol(first name)"

let firstname =

symbol

("first name");

// use a computed object literal property

let person =

;// make the property read only

object.

defineproperty

(person, firstname,);

console.

log(person[firstname]);

// "nicholas"

建立乙個可共享的symbol:
symbol.

for(

);

沒有就建立,有的話呼叫。

在全域性登錄檔中檢索與symbol有關的鍵:

symbol.

keyfor()

;

全域性登錄檔是乙個類似全域性作用域的共享環境。

let uid = symbol.

for(

"uid"),

desc =

string

(uid)

;console.

log(desc)

;// "symbol(uid)"

symbol不可拼接或轉換為字串或轉換為數字。

object.keys():返回所有可列舉屬性名

object.getownpropertynames():返回所有屬性名,不管是否可列舉

symbol.hasinstance方法

函式的方法,確定物件是否為函式的例項。

obj instanceof

array

;//等價於

array[symbol.hasinstance]

(obj)

;

object.

defineproperty

(myobject, symbol.hasinstance,})

;

symbol.方法

作用引數

返回值 [有]/[無]

hasinstance

檢測繼承資訊

物件true

toprimitive

返回物件原始值//valueof//tostring()

值原始值

match

比較字串

字串匹配元素的陣列/null

replace

替換字串

原始字串(,替換字串)

字串search

定位子串

字串匹配到返回索引或-1

split

分解字串

字串返回包含分解後片段的陣列

symbol.屬性

表示屬性值

isconcatspreadable

配置某物件作為array.prototype.concat()方法的引數時是否展開

其陣列元素屬性為布林值,為true,則表示物件有length屬性和數字鍵

tostringtag

建立物件描述

unscopables

定義不可被with引用的物件屬性名稱的物件集合

symbol.toprimitive()

數字模式優先順序排序:

呼叫valueof()方法,如果結果為原始值,則返回。

否則,呼叫tostring方法,如果結果為原始值,則返回。

如果再無可選值,則丟擲錯誤。

字串模式優先順序排序:

呼叫tostring()方法,如果結果為原始值,則返回。

否則,呼叫valueof()方法,如果結果為原始值,則返回。

如果再無可選值,則丟擲錯誤。

深入理解ES6 解構

解構時一種打破資料結構,將其拆分為更小部分的過程。解構在實際開發中經常會應用到物件和陣列中。關於解構的基本用法,請參考 es6 變數的宣告及解構賦值 const node let node 對已經宣告的變數賦值 const node let a,b node const obj let obj co...

深入理解ES6之《解構》

如果使用var let const解析宣告變數,則必須提供初始化程式 也就是等號右側的值 以下語句有語法錯誤 var let const解構賦值表示式 也就是右側的表示式 如果為null或undefined會導致程式丟擲錯誤,因為任何嘗試讀取null或undefined的屬性的行為都會觸發執行時錯誤...

深入理解es6的promise

一 promise入門 1.promise物件是什麼 函式的另一種原生實現,比之前 函式的寫法機構清晰,功能強大,2.以前 這麼寫 function a fn else 1000 呼叫a function m 3.用promise 寫 function a else 1000 呼叫a then fu...