菜鸟-创作你的创作

object.keys

你提到的 Object.keys,这是 JavaScript 内置对象 Object 的一个方法,用于 获取对象自身可枚举属性的键名数组。我给你详细解析一下,包括用法、示例和注意点。


一、语法

Object.keys(obj)


二、基础示例

const person = {
  name: 'Alice',
  age: 25,
  city: 'Beijing'
};

const keys = Object.keys(person);
console.log(keys); 
// 输出: ["name", "age", "city"]

Object.keys 返回的是对象的 属性名数组


三、使用场景

1️⃣ 遍历对象

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

Object.keys(obj).forEach(key => {
  console.log(key, obj[key]);
});

输出:

a 1
b 2
c 3


2️⃣ 获取对象属性数量

const obj = { x: 10, y: 20 };
console.log(Object.keys(obj).length); 
// 输出: 2


3️⃣ 筛选对象属性

const obj = { name: 'Tom', age: 30, city: 'Shanghai' };
const filteredKeys = Object.keys(obj).filter(key => key !== 'age');
console.log(filteredKeys); 
// 输出: ["name", "city"]


四、注意点

  1. 只获取自身属性
const parent = { a: 1 };
const child = Object.create(parent);
child.b = 2;

console.log(Object.keys(child)); 
// 输出: ["b"],不包含 a

  1. 只获取可枚举属性
const obj = {};
Object.defineProperty(obj, 'hidden', {
  value: 'secret',
  enumerable: false
});
obj.visible = 'ok';

console.log(Object.keys(obj)); 
// 输出: ["visible"]

  1. 返回的键名都是字符串
const obj = { 1: 'one', 2: 'two' };
console.log(Object.keys(obj)); 
// 输出: ["1", "2"]

  1. 数组对象也可以用
const arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); 
// 输出: ["0", "1", "2"]


五、与其他方法对比

方法返回内容是否包含继承属性是否包含不可枚举属性
Object.keys(obj)自身可枚举属性名数组
Object.getOwnPropertyNames(obj)自身属性名数组
for...in可枚举属性名(自身+继承)

六、一句话总结

Object.keys(obj) = 获取对象自身可枚举属性名数组,常用于遍历、筛选和统计对象属性。

退出移动版