javascript原型,原型链特点:原型链实现了继承。
JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。每个继承父函数的子函数的对象都包含一个内部属性proto。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。
原型链的作用是用来实现继承,比如我们新建一个数组,数组的方法就是从数组的原型上继承而来的。
var arr = []
arr.map === Array.prototype.map //arr.map
是从arr.__proto__上继承下来的,arr.__proto__也就是Array.prototype。
扩展资料:
1.JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。
2.每个继承父函数的子函数的对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。
3.原型链实现了继承。原型链存在两个问题:a 包含引用类型值的原型属性会被所有实例共享。b 在创建子类型时,无法向超类型的构造函数中传递参数。
参考资料:百度百科-javascript
1.访问对象的属性或者方法是,先查找对象自身有没有改属性或者方法
2.接着查找它的原型, proto 指向的prototype原型对象
3.查找Object的原型对象(原型对象的原型)
4.一直到Object为null 时停止查找
5. proto 对象的原型 为成员的查找机制,提供了一条线索路线