JS中的原型链

image

image

打印结果如下:

image

每个实例原型最终都会指向Object原型,其根本是利用Object来创建实例

每次进行实例化new 一个对象时其实都是 new 一个 Object 对象,通过Object()构造器

获取Object原型来构建

如图所演示,var person = new Person()时 Person函数(类)会将Person.prototype

中存在的原型属性获取并传给person实例中的_proto_属性,而Person.prototype中 _proto_属

性里也有从上一个原型对象中继承下来的原型属性,这里的Person.prototype是通过Object()构

造函数将Object.prototype中的方法继承了下来(例如我们所属性的toString方法,其实是

Oject.prototye中定义的方法。)

 

实验验证:原型链传递属性或者方法

增加代码:

Person.prototype.run = function(){

  console.log('run')

打印结果如下:

image

由此得出结论:通过原型链定义的方法,被传递至实例person的_proto_中

而想要调用run方法 => person.run() 这样即可,实际调用的是_proto_中的run方法

这与通过构造函数定义的方法不太一样呢?

下面是通过构造函数定义出来的voice方法

image

posted @ 2019-10-07 19:46  阴阳师先生  阅读(499)  评论(0)    收藏  举报