# 1、class
声明会提升,但不会初始化值,类似于let、const
声明变量一样。
# 2、class
声明内部会启用严格模式。
# 3、class
的所有方法(包括静态和实例方法)都是不可枚举的。
# 4、class
的所有方法(包括静态和实例方法)都没有原型对象prototype
,不能用new
来调用。
# 5、必须使用new
来调用class
。
# 6、class
内部无法重写类名。
# 7、ES6子类可以直接通过__proto__
寻址到父类。
//ES6
class Super {};
class Sub extends Super {};
const sub = new Sub();
sub.__proto__ === Sub.prototype;//true
Sub.__proto__ === Super;//true
Sub.prototype.__proto__===Super.prototype;// true
//ES5
function Super() {};
function Sub() {};
Sub.prototype = new Super();
Sub.prototype.constructor = Sub;
var sub = new Sub();
Sub.__proto__ === Function.prototype;//true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19