es5中类与es6class有什么区别
时间: 2024-09-18 18:01:18 浏览: 48
在JavaScript中,ES5和ES6引入了不同的类定义机制。以下是两者的主要区别:
**ES5 (Object.create + Function.prototype)**:
ES5并没有内置的`class`关键字来定义类,它通过组合`Object.create()`和`Function.prototype.extend`(假设存在这个方法)来模拟。在ES5中,类更像是一个模板,创建实例时会基于原型链继承。
```javascript
function ES5Class(constructor) {
constructor.prototype.constructor = constructor;
}
var MyES5Class = ES5Class(function MyClass() {
// 实例属性和方法
});
```
使用时,需要显式地创建新对象并设置构造函数:
```javascript
var obj = new MyES5Class();
```
**ES6 (class语法)**:
ES6引入了更直观、简洁的`class`关键字,使得类的定义更为明确。类包含了构造函数(`constructor`)、原型方法和静态方法,语法清晰易懂:
```javascript
class MyClass {
constructor() {
// 构造函数体
}
method() { /* 方法体 */ }
static staticMethod() { /* 静态方法体 */ }
}
```
实例化直接通过`new`关键字:
```javascript
var myInstance = new MyClass();
```
ES6还提供了一些额外特性,如访问修饰符(`public`、`private`、`protected`),默认参数等。
阅读全文