」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JS 中的符號與物件♥

JS 中的符號與物件♥

發佈於2024-11-08
瀏覽:855

Symbols and Objects in JS♥

符號資料類型

Symbol 是 JS 中的一種資料類型。它通常用於在 Javascript 中建立唯一鍵和隱藏物件鍵。

有兩種類型的符號

  1. 本地符號 - 它們未在全域符號註冊表中註冊,即使具有相同的描述符,值也是唯一的。
  2. 全域符號 - 它們在全域符號註冊表中註冊,且值不是唯一的

全域符號註冊表:全域符號註冊表是儲存使用Symbol.for建立的符號的空間。

句法
在下面的範例中,「john」是描述符,key_one 和 key_two 是符號。

const key_one = Symbol("john"); //local symbol
const key_two = Symbol.for("john"); //global symbol
console.log(typeof key_one) // symbol
console.log(typeof key_two); //symbol

主要區別

相同值的描述子在局部符號中不相同

正如我之前所說,即使局部符號中的描述符相同,每個符號也是唯一的。讓我們驗證一下。

應用程式

const key_one = Symbol("john");
const key_two = Symbol("john");
key_one == key_two // false
key_one === key_two //false

相同值的描述符在全域符號中是相同的

const key_one = Symbol.for("foo");
const key_two = Symbol.for("foo");
console.log(key_one === key_two); //true

關於物體和符號的一些事實

  1. 符號不會轉換為字串。
  2. 您無法使用 for...in 迴圈存取這兩個符號
  3. 即使使用 Object.keys() 屬性也無法存取這兩個符號
  4. 物件中的每個鍵都轉換為字串偶數。
  5. 使用Object.getOwnPropertySymbols()函數可以查看物件的所有符號

應用程式

const zero = Symbol("0");
const temp = {
 0:"zero",
 1:"one",
 [zero]:"zero",
 1.1:"one one",
}
const keys = Object.keys(temp); //["0","1","1.1"]
console.log(temp[1.1]) // one one
console.log(Object.getOwnPropertySymbols(temp)) // [Symbol(0)]

如何在Symbol.for()中取得描述符

使用Symbol.keyFor(symbol)可以獲得全域符號的描述子

const key_one = Symbol.for("john")
Symbol.keyFor(key_one) // "john"
typeof Symbol.keyFor(key_one) //string

請在 dev.to 和 linkedin 上支持我? TY?

版本聲明 本文轉載於:https://dev.to/aryan015/symbols-and-objects-in-js-3ko7?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3