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

JS 中的符號與物件♥

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

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]刪除
最新教學 更多>
  • Lerna – Monorepo 管理的關鍵
    Lerna – Monorepo 管理的關鍵
    歡迎回到莫諾雷波城堡! 現在城堡已經建成,每個房間(項目)都已就位。但如果沒有正確的管理,事情可能會變得混亂。誰來幫助城堡順利運作?這時勒納登場了──一位強大的巫師,擁有神奇的命令,可以讓一切保持秩序。 Lerna 是您在 monorepo 土地上的嚮導,確保所有房間(項目)同步,所有包都鏈接,...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中循環嵌套數組並顯示特定值?
    如何在 PHP 中循環嵌套數組並顯示特定值?
    PHP foreach 與嵌套數組:綜合指南在 PHP 中,瀏覽嵌套數組可能是常見的挑戰。本討論重點討論特定場景,您的目標是顯示嵌套數組的子集,特別是第二個嵌套數組中的值。 將foreach 與嵌套數組結合使用要使用foreach 處理嵌套數組,您可以使用以下命令方法:]範例:$tmpArray =...
    程式設計 發佈於2024-11-08
  • 提升 Web 效能:前端開發人員指南
    提升 Web 效能:前端開發人員指南
    大家好!自从我上次写博客以来已经有一段时间了,我承认,这让我有点难过。现实是,有太多东西需要学习,有时感觉永远没有足够的时间来深入了解所有内容。我在跟谁开玩笑呢?事实是,我最近拖延得很厉害。 但最近,我一直在探索网络性能——这对于任何前端开发人员来说都是一个至关重要的话题——我很高兴分享我所学到的东...
    程式設計 發佈於2024-11-08
  • 如何利用先進的加密技術增強資料保護?
    如何利用先進的加密技術增強資料保護?
    對稱金鑰加密:FernetPython 擁有強大的加密庫,提供Fernet,這是一種安全、最佳實踐的加密方案。 Fernet 採用 AES CBC 加密、HMAC 簽章以及版本和時間戳記資訊來保護資料。建議使用 Fernet.generate_key() 產生金鑰。 from cryptograph...
    程式設計 發佈於2024-11-08
  • 什麼是本地主機?本地主機作為開發人員的用途
    什麼是本地主機?本地主機作為開發人員的用途
    您有沒有想過當開發人員在將網站上線之前測試網站時會發生什麼?或者網路管理員如何檢查他們的系統是否正常運作?答案在於一個強大但經常被誤解的概念,稱為 localhost。讓我們深入了解 localhost 是什麼、為何它很重要以及它如何變得非常有用。 什麼是本地主機? 用最簡單的術語...
    程式設計 發佈於2024-11-08
  • 為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?
    為什麼 Debian 和 Ubuntu Docker 容器之間的標準輸出緩衝不同?
    Docker 容器中的標準輸出緩衝:Debian 與Ubuntu 的案例在Docker 容器中執行程式碼時,標準輸出緩衝可能會發生在某些情況下,但在其他情況下則不然。在使用 io.MultiWriter 將 stdout 定向到控制台和日誌檔案的情況下會出現此問題。 根本原因:平台差異根本原因造成此...
    程式設計 發佈於2024-11-08
  • 語意HTML
    語意HTML
    語意 HTML 是 HTML 的一部分,可協助您以維護和 SEO 友善的方式組織您的網站。 SEO 代表:搜尋引擎優化。 當您在建立網站時遵循 HTML 語意時,網站往往會更容易被搜尋引擎排名更高,當然也能讓螢幕閱讀器更輕鬆地瀏覽您的網站。 以下是一些語意 HTML 標籤: 1- 「標題」標籤...
    程式設計 發佈於2024-11-08
  • 如何在單一 FastAPI 端點中處理表單和 JSON 資料?
    如何在單一 FastAPI 端點中處理表單和 JSON 資料?
    如何建立可以接受表單或 JSON 正文的 FastAPI 端點? 在 FastAPI 中,您可以建立可以接受表單或 JSON 正文的端點使用不同的方法。以下是幾個選項:選項1:使用依賴函數此選項涉及建立一個依賴函數,該函數檢查Content-Type 請求標頭的值並使用Starlette 的方法解析...
    程式設計 發佈於2024-11-08
  • 如何在 Golang 中合併多個映射,同時避免重複值?
    如何在 Golang 中合併多個映射,同時避免重複值?
    在Golang 中合併映射問題:合併多個映射,保留與跨映射中的相同鍵關聯的值。 初始方法:提供的程式碼嘗試透過迭代每個映射來合併映射,根據匹配鍵將值新增至結果映射。但是,此方法不處理結果映射中的重複值。 簡單合併:可以透過將值附加到切片來實現修改後的合併函數來處理重複項與結果映射中的鍵關聯。 fu...
    程式設計 發佈於2024-11-08
  • 將 ZingGrid 連接到 Supabase:在幾分鐘內新增後端
    將 ZingGrid 連接到 Supabase:在幾分鐘內新增後端
    從我在 Zing 部落格上的文章中交叉發布。 Supabase 是一個開源 Firebase 替代品。他們提供多種服務,但出於本文的目的,我們將深入探討它如何充當網格的簡單後端。 初始設定 在開始設定網格之前,我們需要在 Supabase 方面執行幾個步驟。 1...
    程式設計 發佈於2024-11-08
  • 如何在水平行中建立重疊的 Flex 項目?
    如何在水平行中建立重疊的 Flex 項目?
    創建重疊的 Flex 項目創建可能超出可用寬度的水平行 Flex 項目時,通常需要讓它們重疊。預設情況下,Flexbox 會縮小項目以適合容器。 Flexbox 方法要實現重疊,我們可以使用以下方法: overflow: visible;}.card { width: 10em; min-width...
    程式設計 發佈於2024-11-08
  • 適合初學者的 Vue.js VueJs 部分錶單和事件監聽器
    適合初學者的 Vue.js VueJs 部分錶單和事件監聽器
    為什麼要使用 Vue.js 作為表單? Vue.js 在建立表單方面的優勢: 簡單的資料綁定:Vue.js 使用 v-model 在表單輸入和元件資料之間綁定數據,使同步變得容易。 反應性:模型資料的任何變更都會自動更新視圖,確保使用者始終看到最新的數據,而無需編...
    程式設計 發佈於2024-11-08
  • Context API 與 Redux
    Context API 與 Redux
    在 React 生態系統中,Context API 和 Redux 都是流行的狀態管理工具,但它們有不同的用途並具有不同的優勢。 React 內建的 Context API 提供了一種在元件樹中共用狀態的方法,而無需在每個層級手動傳遞 props。它對於更簡單的應用程式或主題管理或用戶身份驗證等特定...
    程式設計 發佈於2024-11-08
  • 我們如何使用臨時容器建立範圍管道?
    我們如何使用臨時容器建立範圍管道?
    使用臨時容器實現範圍管道要建立處理臨時容器內的值的範圍管道,必須合併views::cache1運算子。此運算符會快取轉換的結果,確保其可用於後續操作。 考慮以下場景,其中第三方函數 f 接受類型 T 的參數並傳回 T 的向量。將f 套用於無限範圍src 的所有元素並將結果展平為單一範圍的範圍管道,我...
    程式設計 發佈於2024-11-08
  • 如何使用 Python 檢索 Github 儲存庫數據
    如何使用 Python 檢索 Github 儲存庫數據
    您的組織是否擁有太多github 儲存庫,並且您需要一種簡單的方法來總結和記錄每個儲存庫的內容以用於報告、儀表板或審計目的?下面是一個使用 Github API 完成該操作的快速腳本。 功能: get_repo_info(所有者,回購): 取得 GitHub 儲存庫擁有者的使用者名...
    程式設計 發佈於2024-11-08

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

Copyright© 2022 湘ICP备2022001581号-3