「js - classes」class 2

What is a class?

Posted by My on August 13, 2023

什么是类?如果没有类,或者类别,如何描述苹果、描述房子、描述具有某些特征的事物? 那类就是用来降低我们的认知成本,「类的本质就是用来描述具有相同特征的对象」。

也就说在「面向对象」编程中,对于某个对象的特征的描述,要通过类来实现,将这些特征描述在类中。另外,对象的特征可分为两大类,一类是属性,即一些名词特征,另一类是方法,如对象的行为等等。

比如有一个 Dog 类,有毛发、体重、年龄、跳、吃的特征,虽然有了这些特征,但是不同的 dog 有不同的毛发、体重等,所以我们应该在类中进行详细的描述,描述不同 dog 的特征。

JS 是在两个时间节点里去对这些特征进行描述的。

  • 对象创建时 该节点的描述行为称为构造函数。构造函数的作用是创建一个对象,并为其设置初始属性值(特征值)。 对象创建了,我们说的这个对象的体重是什么,在代码上的体现就是 this.weight = 100;,其中 this 指的就是这个实例对象。 而创建对象的时候,如果不知道对象的特征值,就得在创建时传入。

  • 动作运行时 当对象的行为被调用时,该节点的描述行为称为方法。方法的作用是对对象进行操作,如修改属性值、执行某些操作等。

1
2
3
4
5
6
7
8
9
10
11
12
13
class Dog {
  constructor(name, breed, weight) {
    this.name = name;
    this.breed = breed;
    this.weight = weight;
  }
  bark() {
    console.log("Woof!");
  }
  run() {
    console.log("Running...");
  }
}

如上所示,Dog 类是一个构造函数,它接收三个参数,分别是 namebreedweight。 然后,Dog 类定义了两个方法,bark()run()

1
2
3
const myDog = new Dog("Rufus", "Labrador", 20); // 创建时描述
myDog.bark(); // 运行时描述
myDog.run(); // 运行时描述