Symbol(ES6)


Symbol類型:Symbol是ES6新出的基本類型

1,每一個Symbol的值都是唯一的,不與其他的相等。

let symbol1 = Symbol();

let symbol2 = Symbol();

console.log( symbol1 === symbol2 ); ?//false

但如果你直接將s1賦值給s2,就是所謂的淺拷貝,會相等。

2,Symbol充當唯一對象的屬性(key)

letmyObject = {

? ? publicProperty:'Value of myObject[ "publicProperty" ]'

};

myObject[ symbol1 ] ='Value of myObject[ symbol1 ]';

myObject[ symbol2 ] ='value of myObject[ symbol1 ]';

console.log(myObject);

//publicProperty:"Value of myObject[ "publicProperty" ]"

//Symbol():"Value of myObject[ symbol1 ]"

//Symbol():"value of myObject[ symbol1 ]"

也就是說以不同Symbol為key,證明Symbol的唯一性。

1)Symbol屬性鍵的值不會再JSON中顯示,也不會再for...in 和Object.keys中被枚舉出來。

console.log(JSON.stringify(myObject));

//"{"publicProperty":"Value of myObject[ \"publicProperty\" ]"}"

console.log( for(var key in myObject) {

? ? console.log(key, myObject[key])

})? // publicProperty Value of myObject[ "publicProperty" ]

console.log( Object.keys(myObject) );

///["publicProperty"]

雖然Symbol 鍵的屬性沒有在上述案例中出現(xiàn),這些屬性在嚴格意義上也不是完全私有的。

2)Object.getOwnPropertySymbols提供了一種檢索對象的 Symbol鍵的方法。

concosle.log( myObject[Object.getOwnPropertySymbols(myObject)[0]] )

///"Value of myObject[ symbol1 ]"

3.Symbol被包含在淺拷貝里

var cloneObject = Object.assign( {}, myObject );

console.log( cloneObject )

/// publicProperty:"Value of myObject[ "publicProperty" ]"

/// Symbol():"Value of myObject[ symbol1 ]"

/// Symbol():"value of myObject[ symbol1 ]"

4,正確命名 Symbol

如果你需要額外的語句注釋,可以在Symbol上附上一個注釋

let leftNode = Symbol('binary left')

console.log(leftNode);

///Symbol(binary left)

(如果兩個Symbol有相同的描述,這兩個symbol仍不相同)

5.全局Symbol注冊表

Symbol注冊表,為字符串和Symbol提供了一對一的關系,使用Symbol.for(key) 返回Symbol

let private1 = Symbol.for('fristName');

let private2 = Symbol.for('fristName')

myObject[private1] = '222';

myObject[private2] = '333';

console.log(myObject[private1])

/// 333

由于注冊表Symbol的值與字符串有一一對應的關系,可以通過keyFor檢索字符串鍵

console.log( Symbol.keyFor(private1) );

/// "fristName"


..好了好了,還有很多用法:我就是看著這個網(wǎng)址一個一個打下來的

https://my.oschina.net/u/2903254/blog/818796


更新一下:沒寫明天學什么。。

明天學一下異步加載數(shù)據(jù)吧。。。。做一個圖片懶加載。。。我的服務器咋配不好啊。。。

明天下午要去biu了,害怕玩也玩不好。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、let 和 constlet:變量聲明, const:只讀常量聲明(聲明的時候賦值)。 let 與 var 的...
    dadage456閱讀 837評論 0 0
  • 第一章 編譯原理 js是一門編譯語言 傳統(tǒng)編譯語言流程: 分詞/詞法分析:把字符串分解成有意義的代碼塊 解析/語法...
    冥冥2017閱讀 647評論 0 0
  • 本人自學es6已經有一段時間了,只覺得有些時候很是枯燥無味, 時而又覺得在以后的職業(yè)生涯中會很有用,因為es6的很...
    可樂_37d3閱讀 1,660評論 0 0
  • ??【連載】《阡陌》目錄 【連載】《阡陌》(十六) 二十一 劉蘭芝終究還是被焦母執(zhí)意遣歸了。在那個時代,家長的威權...
    于昰閱讀 631評論 0 4
  • 自從搬到新的住址,每天上下班都要親歷7號線的擁擠與忙亂。人們有秩序地排列在門前等候,可當列車到站,門緩緩打開的時...
    Bactery閱讀 263評論 0 0

友情鏈接更多精彩內容