ES6新特性 增加新型別 Symbol

2021-09-21 13:50:44 字數 1442 閱讀 2060

es6新增了一種資料型別:symbol,symbol是用來定義物件的唯一屬性名的不二之選;

symbol如何使用呢, symbol不是乙個建構函式哦, 如果用new symbol的話, 會報錯的:

執行下面**

var sym1 =

symbol()

;var sym2 =

symbol

("foo");

var sym3 =

symbol

("foo");

console.

log(sym1, sym2, sym3)

//輸出symbol() symbol(foo) symbol(foo)

連自己都不等於自己:

//用同樣的引數建立兩次, 也是不相等的:

symbol

("foo"

)===

symbol

("foo");

//輸出:false

作為屬性名的symbol;使用symbol給物件新增唯一的屬性, symbol也能作為物件的函式名;

let obj =

;let sattr0 =

symbol

("hehe");

let sattr1 =

symbol

("meme");

obj[sattr1]=1

;console.

log(obj[sattr1]);

obj[sattr0]=(

)=>

;

我們可以用typeof判斷某乙個變數型別為symbol型別:

執行下面**

typeof

symbol()

==='symbol'

//輸出:true

typeof

symbol

('foo'

)===

'symbol'

//輸出: true

typeof symbol.iterator ===

'symbol'

//輸出 : true

如果我們不知道symbol的例項名字是什麼,我們怎麼獲取到symbol值的呢, symbol無法被for in , for of迴圈,以及object.keys, object.values 等都無法遍歷到symbol的屬性; object下給我們提供了乙個getownpropertysymbols;

let sym0 =

symbol

("o_o?");

let obj =

for(

let prop of object.

getownpropertysymbols

(obj)

);

es6新特性 ES6新特性(一)

var 1 var宣告的是函式作用域 區域性 但在if for等定義的變數是全域性的 2 var 具有變數提公升,預解析 3 在同乙個作用域下,var可以宣告多次 4 var 宣告的變數會掛載到window上 let1 let不存在變數提公升,在變數使用之前,必須要先宣告 2 let在同一作用域下,...

ES6新特性須知

1.1es5之前函式想要賦預設值var funes5 function a,b,c 1.2es6開始函式想要賦預設值var funes6 function a 50,b 60,c 70 2.1es5之前字串拼接或者拼接屬性值只能如下var a lbj var b 50 var c name a ye...

es6新特性分享

1 字串查詢 es5使用是indexof 返回字元第一次出現的位置int值 es6新增了3個方法 includes startswith endwith 返回bool值 includes 是否包含字元 startswith 首字母是否包含字元 endwith 末尾是否包含字元 2 數值擴充套件 nu...