一、Class中的this指向问题
- 构造函数中:this指向新创建出来的实例
- 类的方法中:this指向该类的实例对象
- 类的静态方法中:this指向类本身
二 、super的使用
1、super作为方法在子类的构造函数中使用
super表示父类的构造函数,子类的构造函数中super一定要放在构造函数最上面,因为super的作用是形成一个子类的对象,这个对象中包含了父类的实例属性和方法
2、super作为对象在子类的普通方法和静态方法中使用
- 普通方法:super指向父类的原型对象,所以只能获取到父类原型对象中定义的属性和方法。实例对象上创建的属性和方法无法获取
- 静态方法:super指向父类
如何辨别那些是原型对象中的属性和方法,那些是实例对象中的:除了显式定义在this上的,其他的的都是原型对象中的
三、类的继承关系
__proto__
:在对象中,指向对应的构造函数的protoType
属性,子类的__proto__
属性,表示构造函数的继承,直接指向父类protoType.__proto__
:表示方法的继承,指向的是父类的protoType
属性

父类和子类之间有两条继承链,一条是__proto__
属性继承链,一条是protoType.__proto__
属性继承链
核心
- 实例的继承:通过super()调用父类构造函数设置获得
- 原型方法及属性的继承:通过继承链
children.protoType.__proto__ = parent.protoType
获得 - 静态方法:通过继承链
children.__proto__ = parent
获得
四、创建一个新实例时发生了什么事情
-
当调用
new Child()
时:- 先创建空对象
{}
- 调用
Child
构造函数 - 在
Child
构造函数中调用super()
(即Parent
构造函数) Parent
构造函数向这个对象添加属性a
和b
- 然后
Child
构造函数继续添加属性c
- 先创建空对象