javascript之原型与原型链

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

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

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

 

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

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

 

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

原型链

构造函数的prototype是一个对象

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

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

 

原型链指向的改变

 

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


 

posted @ 2018-11-05 19:14  帅气兆  阅读(141)  评论(0编辑  收藏  举报