深入了解JS Object.keys

一、基本介紹

Object.keys()是JS的原生函數之一,它返回一個給定對象所有屬性的字符數組,該數組包括對象本身的可枚舉屬性以及從原型鏈繼承的可枚舉屬性(不包括屬性值為undefined的屬性)。

下面是一個示例:

const obj = {
  a: 1,
  b: 2,
  c: undefined,
};

console.log(Object.keys(obj)); // ['a', 'b']

從上面的例子中可以看出,Object.keys()不返回屬性值為undefined的屬性。

二、多層嵌套對象

Object.keys()同樣可以處理多層嵌套的對象。在這種情況下,Object.keys()將返回第一層對象的所有可枚舉屬性的名稱數組。

考慮下面這個例子:

const obj = {
  a: {
    b: 1,
    c: 2,
  },
  d: 3,
};

console.log(Object.keys(obj)); // ['a', 'd']

從上面的例子中可以看出,Object.keys()只返回第一層對象的屬性名稱。如果我們想要獲取所有嵌套對象的屬性名稱,可以使用遞歸或循環,並在每個嵌套對象上使用Object.keys()。

三、支持類數組對象

Object.keys()不僅可以用於普通對象,還可以用於類數組對象。類數組對象是一個具有數字鍵和length屬性的對象。例如,一個函數的參數是一個類數組對象。在這種情況下,Object.keys()將返回數字鍵的字符串表示形式,不包括length屬性。

考慮下面這個例子:

function func() {
  console.log(Object.keys(arguments));
}

func(1, 2, 3); // ['0', '1', '2']

四、符號屬性

Object.keys()不返回符號屬性。符號屬性是指使用符號作為屬性鍵的屬性。這是因為符號屬性是非常新的功能,只在ES6中引入。

考慮下面這個例子:

const sym = Symbol('sym');
const obj = {
  a: 1,
  [sym]: 'symbol',
};

console.log(Object.keys(obj)); // ['a']

從上面的例子中可以看出,符號屬性並未出現在Object.keys()的結果中。

五、總結

通過本文的介紹,我們學習了JS中一個非常簡單但非常有用的函數:Object.keys()。我們了解了它的基本用法,以及如何處理對象的嵌套和類數組對象。我們還了解了符號屬性如何與Object.keys()互動。

原創文章,作者:AWIOX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368637.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AWIOX的頭像AWIOX
上一篇 2025-04-12 01:13
下一篇 2025-04-12 01:13

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿着SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿着SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27
  • 解決js ajax post 419問題

    對於使用ajax post請求時出現的419問題,我們需要進行以下幾個方面的闡述,包括返回碼的含義、可能出現的情況、解決方案等內容。 一、解析419返回碼 419返回碼錶示用戶超時…

    編程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在開發過程中引入了新的API `defineExpose`。在以前的版本中,我們經常使用 `$attrs` 和` $listeners` 實現父組件與子組件之間的通信,但…

    編程 2025-04-25

發表回復

登錄後才能評論