3 1ES6 7 8新特性之Symbol

2021-10-02 21:15:23 字數 1454 閱讀 8569

1.symbol的概念

1.symbol是es6中新增的一種資料型別, 被劃分到了基本資料型別中.

基本資料型別: 字串、數值、布林、undefined、null、symbol

引用資料型別: object

2.symbol的作用

用來表示乙個獨一無二的值

3.如果生成乙個獨一無二的值?

let *** = symbol();

4.為什麼需要symbol?

在企業開發中如果需要對一些第三方的外掛程式、框架進行自定義的時候可能會因為新增了同名的屬性或者方法, 將框架中原有的屬性或者方法覆蓋掉,為了避免這種情況的發生, 框架的作者或者我們就可以使用symbol作為屬性或者方法的名稱

5.如何區分symbol?

在通過symbol生成獨一無二的值時可以設定乙個標記,這個標記僅僅用於區分, 沒有其它任何含義。

eg:    let name = symbol(「name」);

"name"此時為變數name的標記。

**

let name = symbol("name");

let say = symbol("say");

let obj =

} // obj.name = "b";

obj[symbol("name")] = "b";

console.log(obj);

列印結果:symbol(name): "a"

symbol(name): "b"

symbol(say): ƒ ()

__proto__: object

6.注意點

通過symbol生成獨一無二值時需要在後面加上(), 但是前面不能加new, 因為它不是引用型別。

通過symbol生成獨一無二值時傳入的字串僅僅是乙個標記, 方便我們閱讀**, 沒有其它任何意義。

做型別轉換的時候不能轉換成數值,不能做任何運算

symbol生成的值作為屬性或方法名稱時, 一定更要儲存下來, 否則後續無法使用。

for迴圈無法遍歷出symbol的屬性和方法

遍歷取出的方法:

let name = symbol("name");

let say = symbol("say");

let obj = ,

age: 18,

gender: "woman",

hi: function ()

}//將obj中的所有symbol型別的屬性與方法都放到陣列中返回,可通過遍歷陣列取出

console.log(object.getownpropertysymbols(obj));

列印結果:array(2)

0: symbol(name)

1: symbol(say)

length: 2

__proto__: array(0)

3 3ES6 7 8新特性之Generator函式

1.概念 generator 函式是 es6 提供的一種非同步程式設計解決方案 generator 函式內部可以封裝多個狀態,因此又可以理解為是乙個狀態機。2.定義 generator 函式 在普通函式的function後面加上 即可 eg function gen 3.generator函式和普通...

ES6 7 8常用新特性總結 超實用

let 命令也用於變數宣告,但是作用域為區域性 在函式外部可以獲取到b,獲取不到a,因此例如for迴圈計數器就適合使用let。const用於宣告乙個常量,設定後值不會再改變 const pi 3.1415 pi 3.1415 pi 3 typeerror assignment to constant...

ES6 新特性之Symbol

symbol let s1 symbol foo let s2 symbol bar s1 symbol foo s2 symbol bar s1.tostring symbol foo s2.tostring symbol bar es6 引入了一種新的原始資料型別symbol,表示獨一無二的值。...