Skip to content

对象(描述事物的属性)

11.1 对象的概念:属性 + 方法

对象是 JavaScript 中非常重要的数据类型,它允许我们将相关的数据和功能组织在一起。

对象的组成:

  • 属性(Properties):描述对象的特征,由键值对组成
  • 方法(Methods):对象可以执行的操作,是对象中的函数

对象的比喻: 如果把对象比作一个人,那么:

  • 属性:姓名、年龄、性别、身高、体重等
  • 方法:走路、说话、吃饭、工作等

11.2 对象的创建与字面量写法

使用对象字面量创建对象

javascript
// 创建一个空对象
const person = {};

// 创建带有属性和方法的对象
const person = {
  name: "张三",
  age: 25,
  gender: "男",
  sayHello: function() {
    console.log(`你好,我是${this.name}`);
  }
};

使用 new Object() 创建对象

javascript
const person = new Object();
person.name = "张三";
person.age = 25;
person.sayHello = function() {
  console.log(`你好,我是${this.name}`);
};

11.3 对象属性的获取与修改

获取对象属性

有两种方式获取对象的属性:

javascript
// 1. 使用点号(推荐)
console.log(person.name); // 输出:张三

// 2. 使用方括号(适用于属性名包含特殊字符或变量)
console.log(person["age"]); // 输出:25

// 使用变量获取属性
const propName = "gender";
console.log(person[propName]); // 输出:男

修改对象属性

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

// 添加新属性
person.address = "北京市";

// 删除属性
delete person.gender;

11.4 方法:对象中的函数

方法是对象中的函数,用于定义对象的行为。

javascript
const calculator = {
  add: function(a, b) {
    return a + b;
  },
  subtract: function(a, b) {
    return a - b;
  },
  multiply: function(a, b) {
    return a * b;
  },
  divide: function(a, b) {
    if (b === 0) {
      return "除数不能为0";
    }
    return a / b;
  }
};

// 调用方法
console.log(calculator.add(5, 3)); // 输出:8
console.log(calculator.divide(10, 2)); // 输出:5

简化方法语法(ES6+)

javascript
const calculator = {
  add(a, b) {
    return a + b;
  },
  subtract(a, b) {
    return a - b;
  }
};

11.5 遍历对象:for...in 循环

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

javascript
const person = {
  name: "张三",
  age: 25,
  gender: "男"
};

for (let key in person) {
  console.log(`${key}: ${person[key]}`);
}

// 输出:
// name: 张三
// age: 25
// gender: 男

检查属性是否存在

javascript
// 使用 in 运算符
console.log("name" in person); // 输出:true
console.log("address" in person); // 输出:false

// 使用 hasOwnProperty 方法
console.log(person.hasOwnProperty("name")); // 输出:true
console.log(person.hasOwnProperty("toString")); // 输出:false(toString 是继承的方法)

11.6 实战:创建个人信息对象 / 商品对象

实战 1:创建个人信息对象

javascript
// 创建个人信息对象
const person = {
  name: "李四",
  age: 30,
  gender: "女",
  occupation: "工程师",
  hobbies: ["读书", "旅行", "运动"],
  address: {
    city: "上海",
    district: "浦东新区",
    street: "张江高科技园区"
  },
  introduce: function() {
    console.log(`大家好,我是${this.name},今年${this.age}岁,是一名${this.occupation}。`);
    console.log(`我住在${this.address.city}${this.address.district}。`);
    console.log(`我的爱好是:${this.hobbies.join("、")}。`);
  }
};

// 调用方法
person.introduce();

// 访问嵌套属性
console.log(person.address.city); // 输出:上海

实战 2:创建商品对象

javascript
// 创建商品对象
const product = {
  id: "P1001",
  name: "智能手机",
  price: 3999,
  stock: 100,
  category: "电子产品",
  specs: {
    screen: "6.5英寸",
    cpu: "骁龙888",
    ram: "8GB",
    storage: "256GB"
  },
  calculateDiscount: function(percentage) {
    return this.price * (1 - percentage / 100);
  },
  checkStock: function(quantity) {
    return this.stock >= quantity;
  },
  updateStock: function(quantity) {
    if (this.checkStock(quantity)) {
      this.stock -= quantity;
      return true;
    }
    return false;
  }
};

// 测试商品对象
console.log(`商品名称:${product.name}`);
console.log(`原价:${product.price}元`);
console.log(`8折价格:${product.calculateDiscount(20)}元`);
console.log(`库存是否充足:${product.checkStock(50)}`);

// 更新库存
product.updateStock(30);
console.log(`更新后库存:${product.stock}`);

小结

  • 对象是由属性和方法组成的数据集合
  • 使用对象字面量 {} 创建对象是最常用的方式
  • 通过点号或方括号访问对象属性
  • 使用 for...in 循环遍历对象的属性
  • 方法是对象中的函数,用于定义对象的行为
  • 对象可以嵌套,形成复杂的数据结构

© 2026 编程马·菜鸟教程 版权所有