跳到主要内容

简述怎样通过ES5及ES6声明一个类 ?

参考答案:

在ES5和ES6中声明一个类的方法有所不同。下面是两者的基本示例:

ES5:

在ES5中,类是通过构造函数和原型链来模拟的。以下是一个简单的示例:

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

Person.prototype.greet = function() {
    console.log("Hello, my name is " + this.name);
}

var john = new Person("John", 25);
john.greet();  // 输出 "Hello, my name is John"

在这个例子中,Person 是一个构造函数,我们用它来创建新的 Person 对象。greet 方法被添加到 Person 的原型上,因此所有的 Person 实例都可以访问它。

ES6:

ES6 引入了类(class)的概念,使代码更加直观和易读。以下是一个与上述ES5示例功能相同的ES6类:

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

    greet() {
        console.log("Hello, my name is " + this.name);
    }
}

let john = new Person("John", 25);
john.greet();  // 输出 "Hello, my name is John"

在这个ES6示例中,我们使用了 class 关键字来定义一个类。constructor 是一个特殊的方法,当创建类的新实例时会被调用。greet 是一个普通的方法,可以通过类的实例来调用。

注意,尽管ES6的类语法看起来更简洁,但它们实际上只是ES5的语法糖,底层的机制仍然是基于原型链的。