Object.keys(object)
时间: 2023-07-08 11:50:49 浏览: 92
`Object.keys(object)` 是 JavaScript 中的一个方法,它返回一个由对象的所有可枚举属性名称组成的数组。这个方法接收一个对象作为参数,返回的数组中元素的顺序和使用 for...in 循环遍历对象时返回的顺序一致。
例如,如果有一个对象:
```
const obj = {
name: 'Alice',
age: 25,
city: 'New York'
};
```
那么 `Object.keys(obj)` 的返回值将是一个包含对象属性名的数组 `['name', 'age', 'city']`。
可以利用这个方法来遍历对象的属性。例如,可以使用 `Array.prototype.map()` 方法将对象的属性值转换为一个新的数组:
```
const obj = {
name: 'Alice',
age: 25,
city: 'New York'
};
const values = Object.keys(obj).map(key => obj[key]);
console.log(values); // ['Alice', 25, 'New York']
```
需要注意的是,`Object.keys()` 方法只返回对象自身的属性名称,不包括继承的属性。如果需要遍历对象的所有属性,可以使用 `for...in` 循环。
相关问题
对象的常用的操作 Object.assign(对象的深复制/浅复制) Object.defineProperty Object.keys Object.values Object.freeze
在中国的JavaScript中,这几个都是关于对象操作的重要工具:
1. `Object.assign()`:这是一个用于合并多个对象到一个新的对象中的方法。它不会创建新的引用,而是将源对象的属性浅复制到目标对象中,如果目标对象已有同名属性,则会被覆盖。例如:
```
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const newObj = Object.assign(obj1, obj2);
// newObj: {a: 1, b: 2}
```
2. `Object.defineProperty()`:这个方法允许你在运行时修改对象的特性(如添加、删除或修改属性的访问器、可枚举性、可配置性和值)。这对于动态控制属性很有帮助。
3. `Object.keys()` 和 `Object.values()` 分别用于获取对象的所有键名和键对应的值(属性值)以数组形式返回。例如:
```
const obj = { a: 1, b: 2 };
const keys = Object.keys(obj); // ["a", "b"]
const values = Object.values(obj); // [1, 2]
```
4. `Object.freeze()`:此方法用于锁定对象,使其不可添加新属性、删除现有属性或改变其自身和原型链上的任何属性。一旦对象被冻结,所有试图修改的行为都会被阻止。
Object.keys Object.values IE兼容
在JavaScript中,`Object.keys()` 和 `Object.values()` 都是用于遍历对象的方法,分别返回对象自身的所有可枚举属性名(keys)和值(values)。这两个方法在现代浏览器(如Chrome、Firefox、Safari等)以及Node.js环境中非常常用。
- `Object.keys(obj)`:接收一个对象作为参数,返回一个数组,包含该对象的所有自身可枚举属性的名称,数组按照属性名的顺序排列。
- `Object.values(obj)`:同样接收一个对象,返回一个数组,包含该对象的所有自身可枚举属性的值,数组也是按照属性顺序排列。
然而,在旧版的Internet Explorer (IE)中,特别是版本低于9,对ES5标准的支持不足,`Object.keys` 和 `Object.values` 可能并不直接可用。开发者通常需要引入polyfill(即浏览器不支持的特性补充),或者使用其他方式来实现类似功能,比如通过`for...in`循环手动获取键或值。
为了保证在IE中的兼容性,你可以这样做:
```javascript
if (!Object.keys) {
Object.keys = function(obj) {
// 使用其他方法模拟原生keys的行为...
};
}
if (!Object.values) {
Object.values = function(obj) {
var keys = Object.keys(obj);
return keys.map(function(key) { return obj[key]; });
};
}
```
阅读全文
相关推荐














