第5课:对象与类——JS的“信息收纳盒”

生活从不会亏待每一个努力向上的人,愿你带着满腔热忱,无畏前行,用汗水书写青春的华章,用拼搏铸就人生的辉煌,今日的每一份付出,都将是未来成功的基石!

欢迎来到「JavaScript 魔法学院」第 5 课!前几课我们学会了用变量存储零散数据,但如果要管理 一个人的完整信息 (姓名+年龄+爱好),该怎么做呢?今天的主角对象(Object) 就是为这种场景而生!最后带大家用对象开发学生信息管理系统,Let's go!

一、对象:数据的"收纳大师"

1. 为什么需要对象?

现实场景:

用普通变量存储用户信息:

js 复制代码
const userName = "小明";
const userAge = 18;
const userHobby = ["篮球", "音乐"];

缺点: 变量散落,难以关联和管理

对象解决方案:

js 复制代码
const user = {
  name: "小明",
  age: 18,
  hobby: ["篮球", "音乐"]
};

2. 对象的组成

属性: 键值对(key-value)的集合

js 复制代码
const phone = {
  brand: "华为",  // brand 是键,"华为" 是值
  price: 3999,
  is5G: true
};

方法: 值为函数的属性(对象能执行的"动作")

js 复制代码
const dog = {
  name: "旺财",
  bark: function() {
    console.log("汪汪汪汪汪汪!");
  }
};
dog.bark();  // 调用方法

二、对象的"四大操作"

1. 创建对象

① 字面量创建(推荐)

js 复制代码
const student = {
  name: "李雷",
  score: 95,
  study: function() {
    console.log("学习中...");
  }
};

② 构造函数创建

js 复制代码
const student = new Object();
student.name = "李雷";
student.score = 95;

2. 访问属性

点运算符

javascript 复制代码
console.log(student.name);  // "李雷"
方括号(适合动态属性名)

方括号(适合动态属性名)

js 复制代码
const key = "score";
console.log(student[key]);  // 95

3. 修改/添加属性

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

4. 删除属性

js 复制代码
delete student.graduated;  // 删除属性

四、类:对象的"批量生产模具"

1. 现实类比

对象: 一部具体的手机(如"华为 Mate60")

类: 手机的设计图纸,规定了所有手机的共同特征(品牌、型号、开机方法)

2. 基本语法

js 复制代码
 // 定义手机类
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. 完整代码

js 复制代码
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】获取本课源码+工具包!

相关推荐
南玖i1 小时前
vue3 通过 Vue3DraggableResizable实现拖拽弹窗,可修改大小
前端·javascript·vue.js
excel2 小时前
Web发展与Vue.js导读
前端
YAY_tyy2 小时前
Three.js 开发实战教程(五):外部 3D 模型加载与优化实战
前端·javascript·3d·three.js
Zuckjet_4 小时前
开启 3D 之旅 - 你的第一个 WebGL 三角形
前端·javascript·3d·webgl
2401_863801465 小时前
探索 12 种 3D 文件格式:综合指南
前端·3d
珍宝商店6 小时前
前端老旧项目全面性能优化指南与面试攻略
前端·面试·性能优化
bitbitDown6 小时前
四年前端分享给你的高效开发工具库
前端·javascript·vue.js
YAY_tyy6 小时前
【JavaScript 性能优化实战】第六篇:性能监控与自动化优化
javascript·性能优化·自动化
gnip7 小时前
实现AI对话光标跟随效果
前端·javascript
脑花儿8 小时前
ABAP SMW0下载Excel模板并填充&&剪切板方式粘贴
java·前端·数据库