Appearance
对象(描述事物的属性)
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循环遍历对象的属性 - 方法是对象中的函数,用于定义对象的行为
- 对象可以嵌套,形成复杂的数据结构
