1。 數(shù)據(jù)類型Symbol是用于保證對象的屬性名的獨一無二性的。至此數(shù)據(jù)類型擴充為7種: undefined,null,Boolean,Number,Object,String,Symbol。
2。 Symbol函數(shù)可以接受一個參數(shù),作為Symbol實例的描述,如果這個參數(shù)是對象,會調(diào)用對象的toString方法,將對象字符串化。
- Symbol 值不可以和其他類型的值運算,但可以轉(zhuǎn)成字符串和布爾值, 不可以轉(zhuǎn)為數(shù)值:
let sym = Symbol();
String(sym);
sym.toString();
Boolean(sym);
!sym;
- 作為屬性名的Symbol有三種寫法:
let sym = Symbol();
let obj = {};
obj[sym] = "hello"; 或者
let obj = {
[sym]: function(){}
}; 或者
Object.defineProperty(obj, sym, {value: "hello"});
引用Symbol屬性值時只能使用方括號,不能使用點號
- Object.getOwnPropertySymbols(obj)可以提取Symbol屬性,形成一個數(shù)組。
Reflect.ownKeys(obj)可以提出去包括Symbol值的屬性,形成一個數(shù)組。
6。