一、基本介紹
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