关于原型链继承中的constructor
每个构造函数都有一个prototype属性,这个属性指向一个对象,就是原型对象,而原型对象又有一个属性叫constructor指向构造函数。所以通常把constructor简称为构造器,因为他是实例对象找到自己的构造函数的工具,怎么理解这句话呢,因为实例对象可以访问原型对象上的方法和属性,而constructor又是原型对象的属性,所以实例对象可以直接访问构造器constructor,找到构造函数。
原型链继承中,有一个关键点就是:子类型的原型是父类型的实例对象。
在执行完阴影框将Son类的原型对象指向Father类的一个实例对象后,son的构造器就指向了Father,而不再指向Son。因为"son.constructor"本质上是"son.__proto__.constructor",而"son.__proto__"是Father的实例,而Father的实例的构造器肯定指向Father。
总结:某一个构造函数A的原型对象如果不是某个自定义类型的实例时,这个原型对象就是Object的实例,而这个原型对象里面的constructor属性指向构造函数A。
如果某一个构造函数A的原型对象是某个自定义类型B的实例时,这个原型对象的类型就是B类型。那么此时这个原型对象里面的constructor属性指向B类型。这个情况,找构造函数找的是原型对象的构造函数,因为实际上constructor已经不在A的原型对象上了,而在B的原型对象上。所以constructor指向B。
最后编辑于
:2019-03-08 14:18:45
©著作权归作者所有,转载或内容合作请联系作者