任何函数都具有一个 prototype
属性,该属性是一个对象。
function F () {} console.log(F.prototype) // => object F.prototype.sayHi = function () { console.log('hi!') }
构造函数的prototype是一个对象
prototype对象里的constructor对象指向该对象所在的构造函数
构造函数new出来的实例对象中的__proto__指向构造函数中的prototype对象
原型链指向的改变
首先定义两个构造函数Student和Person
将Student构造函数的prototype指向一个Person的实例对象,则原本Student的prototype所指向的对象和Student失去关联,SayHi()方
法不能用。此时Studentl.prototype指向Person的实例对象,person实例对象的__proto__指向Person的原型对象,所以改变原型对象指向
后的Student实例可以使用Person中的eat方法