object.keys和forin区别
时间: 2024-04-23 13:28:25 浏览: 107
`Object.keys()` 和 `for...in` 是 JavaScript 中用于遍历对象的两种不同方法。它们的区别如下:
1. `Object.keys()` 方法是一个静态方法,它返回一个给定对象自身可枚举属性的字符串数组。它只返回对象自身的属性,不包括继承的属性。示例代码如下:
```javascript
const obj = { a: 1, b: 2, c: 3 };
console.log(Object.keys(obj)); // 输出 ["a", "b", "c"]
```
2. `for...in` 循环是一种迭代对象属性的方式,它会遍历对象自身及继承的可枚举属性。在循环体中,你可以通过使用对象的键来访问对应的属性值。示例代码如下:
```javascript
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
console.log(key, obj[key]);
}
// 输出:
// a 1
// b 2
// c 3
```
需要注意的是,`for...in` 循环遍历的是对象的可枚举属性,包括继承的属性和原型链上的属性。如果你只想遍历对象自身的属性,可以使用 `hasOwnProperty()` 方法进行判断。例如:
```javascript
const obj = { a: 1, b: 2, c: 3 };
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key, obj[key]);
}
}
// 输出:
// a 1
// b 2
// c 3
```
总结来说,`Object.keys()` 返回对象自身的可枚举属性组成的数组,而 `for...in` 循环遍历对象自身及继承的可枚举属性。
阅读全文