ECMAscript新特性 - Class 类

101 阅读1分钟

在此之前,ECMAscript 当中都是通过定义函数以及函数的原型对象来去实现的类。

function Person (name) { // 类型的构造函数
    /**
     * 在构造函数中,可以通过 this 访问当前的实例对象
     */
    this.name = name
}
// 如果需要在这个类型,所有的实例之间共享一些成员可以借助函数对象的 prototype 也就是原型去实现
Person.prototype.say = function () {
    console.log(`hi, my name is ${this.name}`)
}

自从 ES2015 开始就可以使用 class 关键词来声明一个类,相比较之前使用函数的方式要更容易理解,结构也会更加清晰。这种语法与一些老牌面向对象语言当中 class 非常类似的,如果说我们想在构造函数当中做一些额外的逻辑,可以添加 constructor 方法,这个方法就是当前这个类的构造函数,同样可以在这个构造函数中使用 this 访问当前的实例对象。如果想为这个类定义实例方法,只需要在这个类里面去添加对应的方法成员。

class Person {
    constructor (name) {
        this.name = name
    }
    say () {
        console.log(`hi, my name is ${this.name}`)
    }
}

两者都是通过 new 关键词创建实例,然后去调用这个实例里面所提供的方法。

const p = new Person('leo');
p.say();