2023年7月3日 星期一

使用 global 的 Symbol

 使用 global 的 Symbol

前言

  在先前的 JavaScript 的 Symbol 入門 提到 Symbol 的基本運用,這次來學習 global 的運用,在此把學習的過程做個紀錄。


內容

  使用 Symbol() 所得到的 Symbal 都是個別的,如果要隨時可以取得同一個 Symbal 的話可以透過 Symbal.for() 來取得同一個 Symbal ,範例如下

let globalSymbol = Symbol.for('foo');
let localSymbol = Symbol('foo');
console.log( globalSymbol === localSymbol );//false
console.log( globalSymbol === Symbol.for('foo') );//true
console.log( localSymbol === Symbol.for('foo') );//false
//
console.log( Symbol.keyFor(globalSymbol) );//"foo"
console.log( Symbol.keyFor(localSymbol) );//undefined


範例開頭有透過 Symbol.for() 來取得的 globalSymbal 與透過 Symbol() 取得的 localSymbal ,可以發現 globalSymbal  與 localSymbal  是不同一個,但如果再次透過 Symbal.for() 用同一名稱取得會發現它與 globalSymbal  是同一個 Symbal !但用類似的手法用在 Symbal() 結果卻不同,也不難理解,因為 Symbal() 每次取得都是獨立的 Symbal。global 的 Symbal 是透過 key 來取得 Symbal ,那如果需要透過 Symbal 來取得 Key 可能嗎?可以透過 Symbal.keyFor() 來達成,不過要注意一下如果用 local 的 Symbal 來查詢時回傳的結果會是 undefined!


參考資料

[ developer.mozilla.org ] Symbol


相關文章與資料

JavaScript 的 Symbol 入門

沒有留言:

張貼留言