深入理解ES6六

Symbol

  • ES6新增的數(shù)據(jù)類型Symbol
  • 創(chuàng)建Symbol:通過去全局的Symbol函數(shù)創(chuàng)建一個SymbolSymbol函數(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ā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 一、ES6簡介 ? 歷時將近6年的時間來制定的新 ECMAScript 標準 ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,126評論 8 25
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運大...
    HetfieldJoe閱讀 1,413評論 0 2
  • 特別說明,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 489評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • I've literally never heard any of these words from u befo...
    回頭望閱讀 233評論 0 0