JavaScript 中的对象是用于存储多个值的数据结构。这些值是键值对(属性和方法)。对象可以包含不同类型的数据,并且可以通过访问其属性来获取相应的值。下面是一些 JavaScript 对象的实际示例,帮助你更好地理解如何创建、使用和操作对象。

1. 创建一个简单的对象

// 创建一个简单的对象
let person = {
  name: "John",
  age: 30,
  city: "New York"
};

// 访问对象的属性
console.log(person.name);  // 输出: John
console.log(person["age"]); // 输出: 30

2. 添加和修改对象的属性

let person = {
  name: "Alice",
  age: 25
};

// 修改已有属性
person.age = 26;

// 添加新的属性
person.city = "Los Angeles";

// 输出修改后的对象
console.log(person);  // 输出: { name: 'Alice', age: 26, city: 'Los Angeles' }

3. 对象的方法

对象不仅可以有数据(属性),还可以有行为(方法)。方法是对象中的函数。

let person = {
  name: "John",
  age: 30,
  greet: function() {
    console.log("Hello, my name is " + this.name);
  }
};

// 调用对象的方法
person.greet();  // 输出: Hello, my name is John

4. 使用构造函数创建对象

构造函数是一种创建具有相同属性和方法的多个对象的方式。

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.greet = function() {
    console.log("Hello, my name is " + this.name);
  };
}

// 使用构造函数创建对象
let person1 = new Person("John", 30);
let person2 = new Person("Alice", 25);

// 调用方法
person1.greet();  // 输出: Hello, my name is John
person2.greet();  // 输出: Hello, my name is Alice

5. 对象的原型

JavaScript 对象支持原型继承。你可以通过原型链共享方法和属性。

function Animal(name) {
  this.name = name;
}

Animal.prototype.speak = function() {
  console.log(this.name + " makes a sound.");
};

function Dog(name) {
  Animal.call(this, name);  // 调用 Animal 构造函数
}

// 让 Dog 继承 Animal 的原型
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

let dog = new Dog("Buddy");
dog.speak();  // 输出: Buddy makes a sound.

6. 对象的 this 关键字

在对象方法中,this 关键字指向调用该方法的对象。

let person = {
  name: "John",
  age: 30,
  introduce: function() {
    console.log("My name is " + this.name + " and I am " + this.age + " years old.");
  }
};

// 调用方法
person.introduce();  // 输出: My name is John and I am 30 years old.

7. 遍历对象的属性

可以使用 for...in 循环来遍历对象的所有可枚举属性。

let person = {
  name: "John",
  age: 30,
  city: "New York"
};

// 使用 for...in 循环遍历对象属性
for (let key in person) {
  console.log(key + ": " + person[key]);
}
// 输出:
// name: John
// age: 30
// city: New York

8. 获取对象的键和值

Object.keys() 返回一个包含对象所有键的数组,Object.values() 返回一个包含对象所有值的数组。

let person = {
  name: "John",
  age: 30,
  city: "New York"
};

// 获取所有键
let keys = Object.keys(person);
console.log(keys);  // 输出: ["name", "age", "city"]

// 获取所有值
let values = Object.values(person);
console.log(values);  // 输出: ["John", 30, "New York"]

9. 对象的 Object.assign()

Object.assign() 用于将一个或多个源对象的属性复制到目标对象。

let person = { name: "John", age: 30 };
let contact = { email: "john@example.com", phone: "1234567890" };

// 合并对象
Object.assign(person, contact);

console.log(person);
// 输出: { name: "John", age: 30, email: "john@example.com", phone: "1234567890" }

10. 删除对象的属性

可以使用 delete 运算符删除对象的属性。

let person = {
  name: "John",
  age: 30,
  city: "New York"
};

// 删除属性
delete person.city;

console.log(person);
// 输出: { name: "John", age: 30 }

总结

  • 对象 是 JavaScript 中用于存储多个值的集合,通常使用键(属性)来访问这些值。
  • 方法 是对象的属性,值为函数。
  • 使用 构造函数 创建具有相同属性和方法的多个对象。
  • 原型 用于实现继承,允许对象共享方法和属性。
  • 可以使用 for...in 循环 遍历对象的属性。
  • 使用 Object.keys()Object.values() 获取对象的键和值。
  • Object.assign() 用于合并对象。
  • 可以使用 delete 删除对象的属性。

通过这些示例,你可以更好地理解和使用 JavaScript 对象,并在实际项目中有效地应用它们。