原型与原型链

一、原型:在JS中,所有对象都是Object的实例,并继承Object.prototype的属性和方法,但有一些是隐性的。

 (1)所有的引用类型(包括数组、对象、函数)都具有对象特性;可自由扩展属性。

 (2)所有的引用对象都有隐性原型属性(proto),但也是一个普通的对象。

   (3)所有函数都有一个prototype属性,但也是一个普通的对象。

   (4)所有的引用类型的proto属性值都指向构造函数的prototype属性值。(obj._proto_ ===object.prototype)

   (5)当试图获取对象属性时,如果对象本身没有这个属性,那就会去他的proto(prototype)中寻找。

二、原型链:找一个属性,首先会在f.proto中去找,因为属性值为一个对象,那么就会在f.proto.proto去找,同理如果还没有找到,就会一直往上去找,直到结果为null为止。这个串起来的链就是原型链。

原文地址:https://www.cnblogs.com/daheiylx/p/9707224.html