好的,我可以为您生成一本markdown格式的学习文档,主题是JavaScript类学习笔记。
JavaScript 类学习笔记
在JavaScript中,类是一种机制,可以用来创建对象。通过类,我们可以定义对象的属性和方法,以及它们之间的关系。
基本语法
在JavaScript中,我们可以使用关键字class
来定义一个类,并使用constructor
函数来初始化对象的属性。下面是一个简单的例子:
javascriptCopy Codeclass Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greeting() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const john = new Person('John', 30);
john.greeting(); // 输出:Hello, my name is John and I am 30 years old.
在上面的例子中,我们定义了一个名为Person
的类,并在构造函数中初始化了name
和age
属性。我们还定义了一个名为greeting
的方法,它将输出一个问候消息。
要创建一个类的实例,我们可以使用new
关键字:
javascriptCopy Codeconst john = new Person('John', 30);
继承
JavaScript的类还支持继承。通过继承,我们可以基于现有类创建新类,并具有该类的所有属性和方法。下面是一个简单的继承示例:
javascriptCopy Codeclass Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog('Fido');
dog.speak(); // 输出:Fido barks.
在上面的例子中,我们使用关键字extends
定义了一个名为Dog
的子类,并将其继承自Animal
类。我们还重写了Dog
类的speak
方法。
实例
下面是一个更完整的JavaScript类示例,它定义了一个基础的员工类,并分别创建了两个不同类型的员工实例:
javascriptCopy Codeclass Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
work() {
console.log(`${this.name} is performing their job duties.`);
}
receivePay() {
console.log(`${this.name} received a paycheck for $${this.salary}.`);
}
}
class Programmer extends Employee {
constructor(name, salary, language) {
super(name, salary);
this.language = language;
}
work() {
console.log(`${this.name} is coding in ${this.language}.`);
}
}
class Manager extends Employee {
constructor(name, salary, employees) {
super(name, salary);
this.employees = employees;
}
work() {
console.log(`${this.name} is managing ${this.employees.length} employees.`);
}
}
const programmer = new Programmer('Jane', 100000, 'JavaScript');
programmer.work(); // 输出:Jane is coding in JavaScript.
programmer.receivePay(); // 输出:Jane received a paycheck for $100000.
const manager = new Manager('John', 150000, [programmer]);
manager.work(); // 输出:John is managing 1 employees.
manager.receivePay(); // 输出:John received a paycheck for $150000.
在上面的例子中,我们定义了一个名为Employee
的基础类,用于表示普通员工。我们还定义了两个子类:Programmer
和Manager
。
Programmer
类具有一个附加属性language
,用于表示该程序员使用的编程语言。Manager
类具有一个附加属性employees
,它是一个数组,包含该经理管理的所有员工。
最后,我们创建了一个名为programmer
的Programmer
类实例和一个名为manager
的Manager
类实例,并对它们进行了一些简单的操作,例如对其方法进行调用。