返回

JavaScript 中优雅处理对象的 6 个方法

前端

在 JavaScript 中,对象是一种数据类型,用于表示一组具有相关属性的数据。对象可以存储各种数据,包括字符串、数字、布尔值、数组和函数。对象也可以包含其他对象。

在平常项目开发中可以使用这些方法容易地处理对象。本文介绍 6 个在项目中用得上的方法,如 Object.freeze(), Object.seal(), Object.create() 等的使用。

1. Object.freeze()

Object.freeze() 方法可以将对象冻结,使其无法被修改。冻结的对象无法添加或删除属性,也无法修改现有属性的值。

const person = {
  name: "John",
  age: 30,
};

Object.freeze(person);

person.name = "Mary"; // 报错
person.age = 31; // 报错

Object.freeze() 方法可以防止对象被意外修改,从而确保数据的完整性。它在以下场景中非常有用:

  • 当你希望创建一个只读对象时。
  • 当你希望防止对象被意外修改时。
  • 当你希望确保数据的完整性时。

2. Object.seal()

Object.seal() 方法可以密封对象,使其无法添加或删除属性,但可以修改现有属性的值。

const person = {
  name: "John",
  age: 30,
};

Object.seal(person);

person.name = "Mary"; // 可以修改
person.age = 31; // 可以修改
person.job = "Developer"; // 报错

Object.seal() 方法可以防止对象被意外添加或删除属性,从而确保数据的完整性。它在以下场景中非常有用:

  • 当你希望创建一个只读对象时。
  • 当你希望防止对象被意外修改时。
  • 当你希望确保数据的完整性时。

3. Object.create()

Object.create() 方法可以创建一个新对象,该对象具有指定对象的原型。原型是一个对象,它包含新对象继承的属性和方法。

const person = {
  name: "John",
  age: 30,
};

const employee = Object.create(person);

employee.job = "Developer";

console.log(employee.name); // John
console.log(employee.age); // 30
console.log(employee.job); // Developer

Object.create() 方法可以让你轻松地创建新对象,并继承指定对象的属性和方法。它在以下场景中非常有用:

  • 当你希望创建一个新对象并继承指定对象的属性和方法时。
  • 当你希望创建一个只读对象时。
  • 当你希望防止对象被意外修改时。

4. Object.assign()

Object.assign() 方法可以将一个或多个对象的属性复制到另一个对象。

const person = {
  name: "John",
  age: 30,
};

const employee = {
  job: "Developer",
};

Object.assign(person, employee);

console.log(person); // { name: 'John', age: 30, job: 'Developer' }

Object.assign() 方法可以让你轻松地复制对象的属性,而无需手动复制每个属性。它在以下场景中非常有用:

  • 当你希望将一个或多个对象的属性复制到另一个对象时。
  • 当你希望合并两个或多个对象时。
  • 当你希望创建新对象时。

5. Object.values()

Object.values() 方法可以返回一个数组,该数组包含对象的所有值。

const person = {
  name: "John",
  age: 30,
  job: "Developer",
};

const values = Object.values(person);

console.log(values); // ['John', 30, 'Developer']

Object.values() 方法可以让你轻松地获取对象的所有值。它在以下场景中非常有用:

  • 当你希望获取对象的所有值时。
  • 当你希望将对象的所有值转换为数组时。
  • 当你希望遍历对象的所有值时。

6. Object.entries()

Object.entries() 方法可以返回一个数组,该数组包含对象的所有键值对。

const person = {
  name: "John",
  age: 30,
  job: "Developer",
};

const entries = Object.entries(person);

console.log(entries); // [['name', 'John'], ['age', 30], ['job', 'Developer']]

Object.entries() 方法可以让你轻松地获取对象的所有键值对。它在以下场景中非常有用:

  • 当你希望获取对象的所有键值对时。
  • 当你希望将对象的所有键值对转换为数组时。
  • 当你希望遍历对象的所有键值对时。