返回

对象操作的新手段:ES6新增方法解析

前端

在JavaScript ES6中,对象操作迎来了令人振奋的革新,新增了多项实用方法,极大简化了对象的操作和管理。本文将深入解析这些新增方法,带领读者探索对象操作的全新世界。

Object.is(a, b)——精确相等判断

Object.is()方法提供了比传统相等运算符(==和===)更精确的值比较。它严格比较两个值,包括NaN和+0/-0。

console.log(Object.is(NaN, NaN)); // true
console.log(+0 === -0); // true
console.log(Object.is(+0, -0)); // false

Object.assign(target, ...sources)——对象合并

Object.assign()方法允许将多个源对象(sources)中的属性合并到一个目标对象(target)中。它可以有效地将多个对象合并为一个单一的、更新的对象。

const obj1 = { name: 'John' };
const obj2 = { age: 25 };
const mergedObj = Object.assign({}, obj1, obj2);
console.log(mergedObj); // { name: 'John', age: 25 }

Object.entries(obj)——对象转数组

Object.entries()方法将对象的所有可枚举属性键值对转换为一个二维数组。这对于遍历对象属性或将其转换为其他数据结构非常有用。

const obj = { name: 'John', age: 25 };
const entries = Object.entries(obj);
for (const [key, value] of entries) {
  console.log(`${key}: ${value}`);
}

Object.values(obj)——对象转数组

Object.values()方法与Object.entries()类似,但它只返回对象的所有可枚举属性值,而不是键值对。

const obj = { name: 'John', age: 25 };
const values = Object.values(obj);
console.log(values); // ['John', 25]

Reflect.ownKeys(obj)——对象所有属性

Reflect.ownKeys()方法返回对象的所有属性的名称,包括不可枚举和Symbol属性。这对于获取对象的完整属性列表非常有用。

const obj = { name: 'John', age: 25, [Symbol('secret')]: 'shhh' };
const keys = Reflect.ownKeys(obj);
console.log(keys); // ['name', 'age', Symbol(secret)]