js學習筆記(symbol)

2021-10-06 09:30:07 字數 1715 閱讀 3577

let smb = symbol( );

let smb2 = symbol( );

console.log( smb == smb2 ); => false

//symbol資料型別是不重複的,也不相等(類似於唯一的字串)

let smb = symbol('symbol資料的描述');

console.log(smb.description); => symbol資料的描述

//可以在symbol的()內新增對資料的描述,並使用symbol.description來讀取描述

smb1 = symbol.for('csdn');

smb2 = symbol.for('csdn');

console.log('smb1 == smb2'); => true

//也可以使用symbol.for定義symbol資料,並且該方法會於記憶體中儲存其symbol值

//當再次使用該symbol值時(同一描述),系統會自動呼叫儲存的symbol

let csdn = symbol.for('csdn');

console.log(csdn); => csdn

let smb = symbol('github');

console.log(smb) => undefined

//只有使用symbol.for()定義的symbol可以使用symbol.keyfor( )方法取得它的描述

let grade = ,

'張三' :

}console.log(grade); => }

//因為物件中的key有重複,故在讀取時會覆蓋前面的屬性

let user1 = ;

let user2 = ;

let grade = ,

[user2.key]: ,

}; console.log([ user2.key ]); =>

//為了避免物件中鍵名的重複,可以使用symbol作為鍵名

let symbol = symbol("這是乙個symbol屬性");

let csdn =

for ( const key in csdn )

for ( const key of object.keys(csdn) )

=> name

//for in和for of都無法遍歷以symbol作為鍵名的屬性

for( const key of object.getownpropertysymbol(csdn) )

=> symbol("這是乙個symbol屬性")

//該方法只能遍歷物件的symbol屬性,但是普通屬性是無法遍歷的

for( const key of reflect.ownkeys(csdn) )

=> name

symbol("這是乙個symbol屬性")

//該方法則可以遍歷物件的所有屬性,包含symbol及普通屬性

故可以使用symbol對物件的屬性進行保護

let site = symbol("這是乙個symbol");

class user

}let lisi = new user('李四');

for( const key in lisi )

=> name

Ruby 學習筆記 Symbol

ruby 學習筆記 symbol symbol 在 ruby 中是由乙個標示符前面加乙個冒號 組成的。從程式設計師的角度說它不是字串,不是變數,不是常量,他僅是個名字,它的值是它自己。從直譯器的角度說,它是乙個指向乙個 symbol table 的指標,這個 symbol table 是乙個ruby...

ES6 11學習筆記 Symbol

symbol 一種新的原始資料型別 宣告方式 let s1 symbol let s2 symbol console.log s1 symbol console.log s2 symbol console.log s1 s2 false let s3 symbol foo let s4 symbol...

es6 學習筆記(二)Symbol

symbol類似於enum,可以起到識別符號的作用。主要可以應用在一下場景。1.可以作為屬性名 var mysymbol symbol var a a.mysymbol hello a mysymbol undefined a mysymbol hello 要注意symbol值作為物件屬性名時,不能...