Symbol數據類型
-
ES6之前的JavaScript數據類型
- Number(數字)
- String(字符串)
- Boolean(布爾值)
- Object(對象)
- Null(空對象指針)
- Undefined(聲明的變量未被初始化時)
-
引入的背景
- 對象的屬性名容易產生命名衝突,爲保證鍵名的唯一性,所以es6引入Symbol數據類型,確保創建的每個變量都是獨一無二的。
-
特點
-
Symbol類型的數據是類似字符串的數據類型,由於Symbol函數返回的值是原始類型的數據,不是對象,所以Symbol函數前不能使用new命令,否則會報錯。
-
可選參數。由於控制檯輸出不同的Symbol變量時都是Symbol(),所以爲了區分,在Symbol變量傳入參數進行區分。
let a1 = Symbol('a1') let a2 = Symbol('a2')
-
-
用法
-
定義對象的唯一屬性名
//在對象裏用Symbol作爲屬性名的三種寫法 let name = Symbol() //第一種方式:藉助數組讀取name變量,此時不能用點運算符,點運算符默認後面的參數時字符串 let a = {} a[name] = 'Nick' //第二種方式:構造時聲明 let a = { [name]:'Nick' } //第三種Object.defineProperty let a = {} Object.defineProperty(a,name,{value:'Nick'});
-
定義常量
//定義字符串常量 const name = Symbol('Nick')
-