ECMAScript6-Symbol


簡(jiǎn)述

ES5的對(duì)象屬性名都是字符串,為了 不引起屬性名的混用和保證屬性名的獨(dú)一無二,進(jìn)而引入了Symbol。
Symbol是javascript的第7種數(shù)據(jù)類型,表示獨(dú)一無二的值

var s = Symbol();
console.log(typeof s);//'symbol'

Symbol函數(shù)不能使用new命令,否則會(huì)報(bào)錯(cuò).因?yàn)镾ymbol是一種原始類型值,不是對(duì)象.

Symbol函數(shù)可以接受一個(gè)字符串作為參數(shù),表示對(duì)Symbol實(shí)例的描述,主要是為了在控制臺(tái)顯示,或者轉(zhuǎn)為字符串時(shí),比較容易區(qū)分。

var s = Symbol('lalal');
console.log(s); // Symbol(lalal)

注:Symbol函數(shù)的參數(shù)只是表示對(duì)當(dāng)前Symbol值的描述,因此相同參數(shù)的Symbol函數(shù)的返回值是不等的.

// 沒有參數(shù)的情況
var s1 = Symbol();
var s2 = Symbol();

s1 === s2 // false

// 有參數(shù)的情況
var s1 = Symbol("foo");
var s2 = Symbol("foo");

s1 === s2 // false

Symbol不能與其他類型的值進(jìn)行運(yùn)算,會(huì)報(bào)錯(cuò)

var sym = Symbol('My symbol');

String(sym) // 'Symbol(My symbol)'
sym.toString() // 'Symbol(My symbol)'
var sym = Symbol();
Boolean(sym) // true
!sym  // false

作為屬性名的Symbol

let width = Symbol(),
    height = Symbol();
let o = {};
o[width] = '200px';
console.log(o); // Object {Symbol(): "200px"}
console.log(o.width); // undefined
console.log(o[width]); //200px

//注1:Symbol不能運(yùn)用點(diǎn)運(yùn)算符
o.width = '1280px';
console.log(o); //Object {width: "1280px", Symbol(): "200px", Symbol(): "300px", Symbol(top): 0}

//注2:另一種賦值的方法,使用Object.defineProperty()的方法
Object.defineProperty(o, height, {
    value: '300px'
}); // Object {width: "1280px", Symbol(): "300px"}
console.log(o);

//注3:另一種定義Symbol值的方式
o[Symbol('top')] = 0;
console.log(o); //Object {width: "1280px", Symbol(): "300px", Symbol(top): 0}
console.log(o[top]); //undefined;
console.log(o[Symbol('top')]); //undefined;??why,如何取值呢
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先,1.MVC,全稱是:Model View Controller ,是模型、視圖、控制器。是一種常見的客戶端軟...
    1693c7e88afe閱讀 638評(píng)論 2 2
  • 窗外,有陽光,透過窗戶照進(jìn)了屋子,一束光,靜靜地,暖暖地,和我呆在了一起。 獨(dú)自坐在窗前,聽著響亮清脆的啼叫聲,想...
    烏鴉一只閱讀 237評(píng)論 0 2
  • 2017年04月15日 (農(nóng)歷:三月十九)星期六晴 【早起】4:45 【學(xué)習(xí)】 1.通讀《大學(xué)》1遍 ,累計(jì)27遍...
    中和lxy閱讀 177評(píng)論 0 1
  • 他的要求很少:孝心+勤勞 問他是否嫌我年齡小,他笑笑說剛剛好,我不懂事也沒關(guān)系,他說他會(huì)包容我 為我做了第一頓飯(...
    一只萌萌的boy閱讀 222評(píng)論 0 0

友情鏈接更多精彩內(nèi)容