一、基本介绍
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/n/368637.html