生活从不会亏待每一个努力向上的人,愿你带着满腔热忱,无畏前行,用汗水书写青春的华章,用拼搏铸就人生的辉煌,今日的每一份付出,都将是未来成功的基石!
欢迎来到「JavaScript 魔法学院」第 5 课!前几课我们学会了用变量存储零散数据,但如果要管理 一个人的完整信息(姓名+年龄+爱好),该怎么做呢?今天的主角对象(Object) 就是为这种场景而生!最后带大家用对象开发学生信息管理系统,Let’s go!
一、对象:数据的“收纳大师”
1. 为什么需要对象?
现实场景:
用普通变量存储用户信息:
const userName = "小明";
const userAge = 18;
const userHobby = ["篮球", "音乐"];
 
缺点: 变量散落,难以关联和管理
对象解决方案:
const user = {
  name: "小明",
  age: 18,
  hobby: ["篮球", "音乐"]
};
 
2. 对象的组成
属性: 键值对(key-value)的集合
const phone = {
  brand: "华为",  // brand 是键,"华为" 是值
  price: 3999,
  is5G: true
};
 
方法: 值为函数的属性(对象能执行的“动作”)
const dog = {
  name: "旺财",
  bark: function() {
    console.log("汪汪汪汪汪汪!");
  }
};
dog.bark();  // 调用方法
 

二、对象的“四大操作”
1. 创建对象
① 字面量创建(推荐)
const student = {
  name: "李雷",
  score: 95,
  study: function() {
    console.log("学习中...");
  }
};
 
② 构造函数创建
const student = new Object();
student.name = "李雷";
student.score = 95;
 
2. 访问属性
点运算符
console.log(student.name);  // "李雷"
方括号(适合动态属性名)
 

方括号(适合动态属性名)
const key = "score";
console.log(student[key]);  // 95
 

3. 修改/添加属性
student.age = 18;          // 添加新属性
student.score = 100;       // 修改已有属性
student["graduated"] = false; // 方括号方式
 

4. 删除属性
delete student.graduated;  // 删除属性
 

四、类:对象的“批量生产模具”
1. 现实类比
对象: 一部具体的手机(如“华为 Mate60”)
类: 手机的设计图纸,规定了所有手机的共同特征(品牌、型号、开机方法)
2. 基本语法
 // 定义手机类
class Phone {
    // 构造函数:设置初始属性
    constructor(brand, model) {
        this.brand = brand;  // this指向新创建的对象
        this.model = model;
    }
    // 方法:所有手机共享的功能
    powerOn() {
        console.log(`${this.brand} ${this.model} 已开机!`);
    }
}
// 通过类创建对象
const myPhone1 = new Phone("华为", "Mate60");
const myPhone2 = new Phone("苹果", "iPhone16");
myPhone1.powerOn();  // 华为 Mate60 已开机!
myPhone2.powerOn();  // 苹果 iPhone16 已开机!
 

 关键结论: class 是语法糖,本质仍是原型继承(后续课程详解)
五、实战:学生信息管理系统
1. 功能需求
- 添加学生信息(姓名、学号、成绩)
 - 显示所有学生平均分
 - 根据学号查找学生
 
2. 完整代码
const students = [];  // 存储所有学生对象
        // 添加学生
        function addStudent(name, id, score) {
            students.push({
                name: name,
                id: id,
                score: score
            });
        }
        // 计算平均分
        function getAverage() {
            let total = 0;
            for (let i = 0; i < students.length; i++) {
                total += students[i].score;
            }
            return total / students.length;
        }
        // 根据学号查找
        function findStudent(id) {
            return students.find(stu => stu.id === id);
        }
        // 测试功能
        addStudent("张三", "2024001", 85);
        addStudent("李四", "2024002", 92);
        console.log(getAverage());  // 88.5
        console.log(findStudent("2024001"));  // 显示张三对象
 

3. 代码解析
-  
用 对象数组 结构化存储数据
 -  
for 循环计算平均分
 -  
find() 方法实现条件查询(后面会详细讲解)
 
下节预告
第 6 课:DOM 操作进阶——网页的“变形术”
-  
动态创建/删除元素
 -  
元素样式的高级操作
 -  
实战:开发「待办事项列表」!
 
回复【JS】获取本课源码+工具包!












![[java八股文][Java基础面试篇]I/O](https://i-blog.csdnimg.cn/img_convert/bdebae7b7209480e531afc360f0c597d.png)






