JavaScript进阶教程 - 类和继承

在ES6之前,JavaScript通过原型链和构造函数实现面向对象编程中的类和继承。ES6引入了classextends关键字,使得基于类的面向对象编程变得更加简洁和易于理解。

类(Classes)

类是一种特殊的函数,可以使用class关键字进行定义。类支持基于原型的继承、构造函数、静态方法和实例方法。

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    greet() {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }

    static info() {
        console.log("This is a Person class.");
    }
}

const john = new Person("John", 30);
john.greet(); // 输出: Hello, my name is John and I am 30 years old.
Person.info(); // 输出: This is a Person class.

在这个例子中,Person类有一个构造函数constructor和一个实例方法greetinfo是一个静态方法,可以直接通过类来调用,而不是通过类的实例。

继承(Inheritance)

继承是面向对象编程的一个核心概念,它允许一个类(子类)继承另一个类(父类)的成员。在JavaScript中,可以使用extends关键字实现继承。

class Student extends Person {
    constructor(name, age, grade) {
        super(name, age); // 调用父类的constructor
        this.grade = grade;
    }

    study() {
        console.log(`My name is ${this.name} and I am studying.`);
    }
}

const alice = new Student("Alice", 20, "A");
alice.greet();  // 输出: Hello, my name is Alice and I am 20 years old.
alice.study();  // 输出: My name is Alice and I am studying.

在这个例子中,Student类继承了Person类。Student的构造函数使用super调用了父类Person的构造函数。Student类还添加了自己的方法study

注意事项

  • 类的所有方法(包括构造函数)默认都是在严格模式下执行的。
  • 类和模块的内部,默认就是严格模式,所以不需要使用use strict指令。
  • 类不存在变量提升(Hoisting),这一点与函数不同。

通过使用类和继承,JavaScript开发者可以更直观地实现和管理对象原型和构造函数,从而提高代码的可读性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终将老去的穷苦程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值