每天學點ES6 —— JS第七種數據類型 Symbol

七種數據類型

boolean

numberstringundefinednullobject 、symbol(標識類型)

symbol 含義

表示獨一無二的,是基本數據類型的一種,類似字符串。

它是為了解決命名重複問題。

symbol 創建

symbol類型數據只能使用 Symbol() 函數創建

注意:

1. symbol值不能與其他類型值進行運算

var s=Symbol();

s;

//輸出Symbol()

Symbol(des) 函數

該函數返回一個 symbol 類型的值,其中參數 des 表示對值的描述

var s=Symbol("name");

s;

//Symbol(name)

注意:

1. Symbol 函數返回的值永遠不相同,即便參數des相同,返回值也不同

轉換

類型數據不會自動轉換,可以轉換為字符串或布爾值

var s=Symbol("name");

String(s); // "Symbol(name)"

Boolean(s); // true

!s; // false

// if語句也可

if(s){

}

方法

1. Symbol.for(des)

登記symbol值,使用此方法生成的symbol值,如果des相同則認為是同一個值。

var s1=Symbol.for("ss");

var s2=Symbol.for("ss");

s1===s2;

//true

2. Symnbol.keyFor(var)

返回已登記symbol的描述值

var s1=Symbol.for("ss");

Symbol.keyFor(s1);

//"ss"

應用

1. 作為對象的key值

必須使用[],取值用.語法報錯(點語法認為後面是字符串)

var s=Symbol();

var obj={

 [s]:1

};

obj; // {Symbol(): 1}

obj[s]; // 1

注:

(1)對象中屬性名是symbol則無法用for in 變量,使用 Object.getOwnPropertySymbol() 返回所有symbol屬性名的數組 或者使用 Reflect.ownKeys() 返回所有屬性名的數組

(2)用作私有屬性


文章到這裡結束,後續更多幹貨,關注後可以收到文章推送

【關注一下不迷路~】

每天學點ES6 —— JS第七種數據類型 Symbol


分享到:


相關文章: