Symbol學習與回憶

2021-08-22 02:39:32 字數 883 閱讀 8679

一種新的資料型別  語法是  

const sy = symbol();
這樣定義是區域性的,每次定義生成的symbol都不會相同

const sy1 = symbol("11");

const sy2 = symbol("11");

sy1===sy2//false

全域性定義是這樣的

const sy3 = symbol.for("11");

const sy4 = symbol.for("11");

const sy5 = symbol.for("11");

sy3===sy4===sy5//true

/*symbol.for()不會每次呼叫就返回乙個新的 symbol 型別的值,而是會先檢查給定的key是否已經存在,如果不存在才會新建乙個值

*/

symbol區域性定義,因為每次定義的返回的值都不相同,所以可以用來做class的私有方法和私有屬性,比如

const xx = symbol("x");

const yy = symbol("y");

const classa = class

getsymbol()

[yy]()

}const newa = new classa ("hello","world");

newa.getsymbol();

newa.[yy]();//uncaught syntaxerror: unexpected token [

/** 按我的理解,通俗的來說,私有屬性和方法,是繼承不了,也就是說,例項裡面並沒有這些屬性和方法

*/

Ruby 學習筆記 Symbol

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

js學習筆記(symbol)

let smb symbol let smb2 symbol console.log smb smb2 false symbol資料型別是不重複的,也不相等 類似於唯一的字串 let smb symbol symbol資料的描述 console.log smb.description symbol資...

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...