大白话解释js的class

1. 它到底是啥?(大白话)

在没有 class 之前,你想造一堆类似的东西(比如好几个学生信息),得复制粘贴代码,很麻烦。
class 就是一张模板图纸

  • 图纸(class):规定好这个对象“长什么样”(有什么属性),会“干什么活”(有什么方法)。

  • 实物(实例):根据这张图纸,用 new 机器“咔咔”生产出来的具体对象。

核心记忆class 不是实物,它只是一张设计图。你得用它“盖”出房子(对象)才能住进去。

2. 怎么用?(拆解成三步)

第一步:画图纸(定义一个类)

用 class 关键字,里面最特殊的是 constructor(构造函数),它是“初始化器”——也就是当你在生产实物时,它第一个跑起来,帮你把东西摆好。

// 定义一个“学生”图纸
class Student {
  // constructor接收参数,用来给新对象设置属性
  constructor(name, age) {
    this.name = name;  // this指向将来生成的那个具体学生
    this.age = age;
  }

  // 定义“方法”(也就是这个类型的人会干啥)
  study() {
    console.log(`${this.name} 正在努力学习!`);
  }
}

 


第二步:照着图纸造实物(实例化)

用 new 关键字,把参数传进去,一个活生生的对象就出来了。 

let stu1 = new Student('小明', 18);

let stu2 = new Student('小红', 19);

console.log(stu1.name); // 输出:小明
stu2.study();           // 输出:小红 正在努力学习!

 

第三步:继承(孩子继承爹的遗产)

这是 class 最牛的地方。如果你觉得“大学生”和“小学生”都是“学生”,但大学生多了一个“写论文”的功能,你可以直接用 extends 继承,不用重写一遍名字和年龄的逻辑。

// 大学生 继承 学生
class CollegeStudent extends Student {
  constructor(name, age, major) {
    super(name, age); // super() 就是调用爹的构造函数,把名字和年龄交给爹去处理
    this.major = major; // 自己独有的属性
  }

  // 自己独有的方法
  writeThesis() {
    console.log(`${this.name} 正在写关于${this.major}的论文`);
  }

  // 也可以覆盖爹的方法(重写)
  study() {
    console.log(`${this.name} 在图书馆卷学习`);
  }
}

let stu3 = new CollegeStudent('大张', 22, '计算机');
stu3.study();       // 输出:大张 在图书馆卷学习(覆盖了爹的)
stu3.writeThesis(); // 输出:大张 正在写关于计算机的论文

 

 

3. 三个让你少走弯路的提醒(必看)

  1. class 只是“语法糖”
    说白了,JS 底层并没有引入什么全新的“面向对象机制”,它本质上还是函数和原型链class 只是把原来复杂难懂的写法,包装得像 Java/C++ 一样好看、好理解。你不能把 class 当作普通对象直接使用,必须 new

  2. 千万别忘了 new
    如果你写成 let stu = Student('小明', 18)(不带 new),程序会报错 Class constructor Student cannot be invoked without 'new'。这就好比你拿着图纸当房子住,肯定要塌。

  3. 方法定义不加逗号
    在 class 里面写方法(如 study() {}),方法与方法之间不用加逗号 ,,直接挨着写就行。加逗号会报语法错误(这是和 JSON 对象最大的区别)。


总结一句顺口溜:

class 是张设计图,new 一下造事物;constructor 搞初始化,extends 继承少走路;别忘 super 调父类,方法之间没逗号。

 
posted @ 2026-07-01 14:00  小囧光  阅读(69)  评论(0)    收藏  举报