javaScript原型链深入理解
1. js的继承机制
在js中,“万物皆对象”,而对象间的继承是通过原型继承(即构造函数的prototype属性)实现的,该prototype属性的值是个对象(简称prototype对象吧),prototype对象在构造函数创建的所有实例中是共享的。而每个对象都是由对应的构造函数创建的,所以每个对象都可通过object.__proto__的方式访问构造函数的prototype对象。
注:Function
2.js原型关系
原型图:
控制台验证:
总结:
因为js里面没有类,所以对象之间的继承是通过js特有的原型链来实现的。每个对象除了手动添加的属性(包含普通属性和方法,如:name:”zs”,say:function(){})外,都含有一个被自动添加的属性对象(键名:__proto__,键值:prototype对象值),该prototype属性对象中也都有一个constructor键,指向他的构造函数。上例原型关系如下:
f.__proto__和Foo.prototype是同一个对象,Foo.prototype.constructor = Foo