javascript之原型与原型链

时间:2021-02-09 14:38:48

javascript之原型与原型链

javascript之原型与原型链

任何函数都具有一个 prototype 属性,该属性是一个对象。

function F () {}
console.log(F.prototype) // => object

F.prototype.sayHi = function () {
  console.log('hi!')
}

 

构造函数的 prototype 对象默认都有一个 constructor 属性,指向 prototype 对象所在函数。

通过构造函数得到的实例对象内部会包含一个指向构造函数的 prototype 对象的指针 __proto__

 

------------------------------------

原型链

javascript之原型与原型链

构造函数的prototype是一个对象

prototype对象里的constructor对象指向该对象所在的构造函数

构造函数new出来的实例对象中的__proto__指向构造函数中的prototype对象

 

原型链指向的改变

 

javascript之原型与原型链

首先定义两个构造函数Student和Person
将Student构造函数的prototype指向一个Person的实例对象,则原本Student的prototype所指向的对象和Student失去关联,SayHi()方
法不能用。此时Studentl.prototype指向Person的实例对象,person实例对象的__proto__指向Person的原型对象,所以改变原型对象指向
后的Student实例可以使用Person中的eat方法