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了,害怕玩也玩不好。