ES6新增資料型別Symbol

2021-10-04 12:37:44 字數 1385 閱讀 8049

es6 引入了一種新的原始資料型別 symbol ,表示獨一無二的值,最大的用法是用來定義物件的唯一屬性名。

symbol 函式棧不能用 new 命令,因為 symbol 是原始資料型別,不是物件。可以接受乙個字串作為引數,為新建立的 symbol 提供描述,用來顯示在控制台或者作為字串的時候使用,便於區分。

let sy =

symbol

("c");

console.

log(sy)

;// symbol(c)

typeof

(sy)

;// "symbol"

// 相同引數 symbol() 返回的值不相等

let sy1 =

symbol

("c");

sy === sy1;

// false

由於每乙個 symbol 的值都是不相等的,所以 symbol 作為物件的屬性名,可以保證屬性不重名。

let sy =

symbol

("key1");

// 寫法1

let syobject =

;syobject[sy]

="c"

;console.

log(syobject)

;//

// 寫法2

let syobject =

;console.

log(syobject)

;//

// 寫法3

let syobject =

;object.

defineproperty

(syobject, sy,);

console.

log(syobject)

;//

symbol 作為物件屬性名時不能用.運算子,要用方括號。因為.運算子後面是字串,所以取到的是字串 sy 屬性,而不是 symbol 值 sy 屬性。

let syobject =

;syobject[sy]

="cc";

syobject[sy]

;// "cc"

syobject.sy;

// undefined

需要注意的是,symbol 值作為屬性名時,該屬性是公有屬性不是私有屬性,可以在類的外部訪問。但是不會出現在 for…in 、 for…of 的迴圈中,也不會被 object.keys() 、 object.getownpropertynames() 返回。如果要讀取到乙個物件的 symbol 屬性,可以通過 object.getownpropertysymbols() 和 reflect.ownkeys() 取到。

es6 新增資料型別Symbol

es6在string number boolean null undefined object之外又新增了一種symbol型別。symbol意思是符號,有乙個特性 每次建立乙個symbol值都是不一樣的。symbol是程式建立並且可以用作屬性鍵的值,並且它能避免命名衝突的風險。var a new s...

ES6 新增Symbol資料型別

1 symbol 是原始資料型別,不是物件。不能用 new 命令。可以接受乙個字串作為引數,為新建立的 symbol 提供描述。let sy symbol kk console.log sy symbol kk typeof sy symbol 注意相同引數 symbol 返回的值不相等 let s...

ES6新增資料型別

1.新增資料型別 symbol 2.proxy 用來攔截在乙個物件上的指定操作,如 var engineer var interceptor engineer new proxy engineer,interceptor engineer.salary 60 salary is changed to...