简述怎样通过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的语法糖,底层的机制仍然是基于原型链的。