Symbol的入門勘察

概念

Symbol()函數(shù)會返回symbol類型的值嫉嘀,該類型具有靜態(tài)屬性和靜態(tài)方法稼跳。它的靜態(tài)屬性會暴露幾個內(nèi)建的成員對象;它的靜態(tài)方法會暴露全局的symbol注冊吃沪,且類似于內(nèi)建對象類,但作為構(gòu)造函數(shù)來說它并不完整什猖,因為它不支持語法:"new Symbol()"票彪。

每個從Symbol()返回的symbol值都是唯一的。一個symbol值能作為對象屬性的標(biāo)識符不狮;這是該數(shù)據(jù)類型僅有的目的降铸。

運用

從上述定義中我們可以看出,Symbol的作用就是聲明一個唯一的變量,縱使傳入的參數(shù)一樣,也不會使它們相等.

let s1 = Symbol('foo')
let s2 = Symbol('foo')

s1 // Symbol(foo)
s2 // Symbol(foo)

s1.toString() // "Symbol(foo)"
s2.toString() // "Symbol(foo)"

s1 == s2    // false

Symbol的參數(shù)只是一個描述,就好像倆個雙胞胎,你無論如何相同的描述他們,他們也是倆個不同的人.世界上每個人都是獨一無二的,而Symbol的作用正是聲明一個獨一無二的變量.

那么為何ES6要出這么一個新類型呢,它的主要作用是什么呢?

由于每一個 Symbol 值都是不相等的,這意味著 Symbol 值可以作為標(biāo)識符摇零,用于對象的屬性名推掸,就能保證不會出現(xiàn)同名的屬性。這對于一個對象由多個模塊構(gòu)成的情況非常有用驻仅,能防止某一個鍵被不小心改寫或覆蓋谅畅。

舉個例子,一個學(xué)校有倆個人,他們很像,如果使用字符串作為他們的描述傳入.

var Student = function(describe){
    this.describe = describe
}

var a = new Student("好學(xué),認(rèn)真,努力")
var b = new Student("好學(xué),認(rèn)真,努力")

a.describe == b.describe // true

使用Symbol生成

var Student = function(describe){
    this.describe = describe
}

var a = new Student(Symbol("好學(xué),認(rèn)真,努力"))
var b = new Student(Symbol("好學(xué),認(rèn)真,努力"))

a.describe == b.describe // false

這里我舉的這個例子可能不太恰當(dāng),因為 a 的描述確實和 b 的描述確實相同.只是想告訴大家,這里的Symbol起的是一個"ID"的作用,就像每個人的身份證一樣,輸入查詢便能看到你的個人信息.

下述借鑒阮一峰老師的例子:

const COLOR_RED1    = Symbol("我是紅色");
const COLOR_RED2    = Symbol("我是紅色");

function getComplement(color) {
  switch (color) {
    case COLOR_RED1:
      return "中國紅";
    case COLOR_RED2:
      return "玫瑰紅";
    default:
      throw new Error('Undefined color');
    }
}

總結(jié)

Symbol 的主要作用就是作為一個可替換字符串或者整型使用的唯一值.

如果想更進一步了解,可以查看下面的參考鏈接:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市噪服,隨后出現(xiàn)的幾起案子毡泻,更是在濱河造成了極大的恐慌罪佳,老刑警劉巖精绎,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡旭蠕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門恼除,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兢仰,“玉大人,你說我怎么就攤上這事贩挣『砬埃” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵揽惹,是天一觀的道長被饿。 經(jīng)常有香客問我,道長搪搏,這世上最難降的妖魔是什么狭握? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮疯溺,結(jié)果婚禮上论颅,老公的妹妹穿的比我還像新娘。我一直安慰自己囱嫩,他們只是感情好恃疯,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著墨闲,像睡著了一般今妄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸳碧,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天盾鳞,我揣著相機與錄音,去河邊找鬼瞻离。 笑死腾仅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的套利。 我是一名探鬼主播推励,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肉迫!你這毒婦竟也來了验辞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤喊衫,失蹤者是張志新(化名)和其女友劉穎受神,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體格侯,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡鼻听,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年财著,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撑碴。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撑教,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出醉拓,到底是詐尸還是另有隱情伟姐,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布亿卤,位于F島的核電站愤兵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏排吴。R本人自食惡果不足惜秆乳,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钻哩。 院中可真熱鬧屹堰,春花似錦、人聲如沸街氢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽珊肃。三九已至荣刑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伦乔,已是汗流浹背嘶摊。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留评矩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓阱飘,卻偏偏與公主長得像斥杜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沥匈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 前面的話 ES5中包含5種原始類型:字符串蔗喂、數(shù)字、布爾值高帖、null和undefined缰儿。ES6引入了第6種原始類型...
    CodeMT閱讀 687評論 0 1
  • [TOC] 參考阮一峰的ECMAScript 6 入門參考深入淺出ES6 let和const let和const都...
    郭子web閱讀 1,781評論 0 1
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點點福利:阿里云產(chǎn)品券散址,享受所有官網(wǎng)優(yōu)惠乖阵,并抽取幸運大...
    HetfieldJoe閱讀 2,592評論 9 22
  • 特別說明宣赔,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 671評論 0 1
  • ES6 引入了一種新的原始數(shù)據(jù)類型Symbol瞪浸,表示獨一無二的值儒将。它是JavaScript語言的第七種數(shù)據(jù)類型,前...
    語目閱讀 3,896評論 0 3