Symbol
- ES6新增的數(shù)據(jù)類型
Symbol
- 創(chuàng)建Symbol:通過去全局的
Symbol
函數(shù)創(chuàng)建一個Symbol
,Symbol
函數(shù)接受一個可選參數(shù),用于添加一段文本描述即將創(chuàng)建的Symbol
,方便閱讀和調(diào)試Symbol程序
let firstName = Symbol('first name');
let person = {};
person[firstName] = 'Nicholas';
console.log('first name' in person); //false
console.log(person[firstName]); //'Nicholas'
console.log(firstName); //'Symbol(first name)'
- ES6擴展了
typeof
操作符,支持返回Symbol
,可以用typeof來檢測變量是否為Symbol
類型.
Symbol共享體系
- ES6提供了一個可以隨時訪問的全局Symbol注冊表,如果要創(chuàng)建一個可共享的Symbol,要使用Symbol.for()方法,該方法只接受一個參數(shù),就是即將創(chuàng)建的Symbol的字符串標識符
let uid = Symbol.for('uid');
let object = {};
object[uid]='12345';
console.log(ojbect[uid]);
console.log(uid);
- Symbol.for()方法首先在全局Symbol注冊表中搜索鍵為'uid'的Symbol是否存在,如果存在,直接返回已有的Symbol;否則創(chuàng)建一個新的Symbol,并使用這個鍵在Symbol全局注冊表中注冊,隨即返回新創(chuàng)建的Symbol
- 可以使用
Symbol.keyFor()
方法在Symbol全局注冊表中檢索與Symbol有關的鍵
let uid = Symbol.for('uid');
console.log(Symbol.keyFor(uid)); //'uid'
let uid3 = Symbol('uid');
console.log(Symbol.keyFor(uid3)) //undefined
Symbol屬性檢索
- ES6中新增
Object.getOwnPropertySymbols()
方法來檢索對象中的Symbol屬性,返回值是一個包含所有Symbol自由屬性的數(shù)組
let uid = Symbol.for('uid');
let object = {
[uid]: '12345'
};
let symbols = object.getOwnPropertySymbols(object);
console.log(symbols.length); //1
console.log(symbols[0]); //'Symbol(uid)'
console.log(object[symbols[0]]) //'12345'
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。