JavaScript 对象的终极指南:掌握对象的方方面面

admin 阅读:83 2024-03-23

javascript 对象是存储键值对的集合。它们使用大括号 {} 创建,键和值用冒号分隔。属性可以通过点语法或方括号语法访问和修改。

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

// 点语法
console.log(person.name); // "John Doe"

// 方括号语法
console.log(person["age"]); // 30

对象方法

方法是附加到对象的函数。它们可以通过点语法或方括号语法调用。

const person = {
  name: "John Doe",
  age: 30,
  greet: function () {
    console.log(`Hello, my name is ${this.name}`);
  },
};

// 点语法
person.greet(); // "Hello, my name is John Doe"

// 方括号语法
person["greet"](); // "Hello, my name is John Doe"

原型和继承

每个 JavaScript 对象都有一个原型,它包含对象的公共属性和方法。对象的原型可以通过 Object.getPrototypeOf() 访问。

对象可以通过 Object.create() 根据其他对象创建,从而继承后者的原型。

const parentObject = {
  property: "parent-value",
};

const childObject = Object.create(parentObject);
childObject.property; // "parent-value"

对象比较

JavaScript 提供了两种比较对象的方法:

  • 引用相等(===):检查两个对象是否引用相同的内存地址。
  • 深度相等(lodash.isEqual):逐层比较两个对象的所有属性值,包括嵌套对象。
const obj1 = { a: 1 };
const obj2 = { a: 1 };

console.log(obj1 === obj2); // false (引用不同)
console.log(_.isEqual(obj1, obj2)); // true (深度相等)

对象遍历

可以使用 for...inObject.keys() 遍历对象的键和值:

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

// 遍历键
for (const key in person) {
  console.log(key); // "name" "age"
}

// 遍历值
Object.keys(person).forEach((key) => {
  console.log(person[key]); // "John Doe" "30"
});

对象冻结和密封

  • 冻结(Object.freeze):防止对象及其属性被修改或删除。
  • 密封(Object.seal):防止添加新属性,但允许修改现有属性。
const person = {
  name: "John Doe",
  age: 30,
};

Object.freeze(person);
person.name = "Jane Doe"; // 不会更改(冻结)

特殊对象

JavaScript 提供了几个特殊对象,包括:

  • 日期(Date):表示日期和时间。
  • 正则表达式(RegExp):表示正则表达式
  • 错误(Error):表示错误。

最佳实践

使用对象时,建议遵循以下最佳实践:

  • 使用点语法访问属性和方法。
  • 避免修改原型对象。
  • 考虑使用冻结或密封来保护敏感对象。
  • 仅在有必要时创建自定义对象。
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!