在JavaScript中,原型与原型链都是老生常谈的问题了,但也是面试常考项,相关文章已有很多,但大多晦涩难懂,在本文中,主要从几个概念和图出发,先分别理解原型、原型对象等概念,再来理清其中的关系。面试
prototype即为原型,**_proto_**称为隐式原型。先后有两个下划线。它是对外隐藏的,咱们在程序开发过程当中,不会直接使用它。下面咱们来详细理解:函数
函数的prototype属性是一个对象----原型对象,这个对象中有有很对方法(根据函数的不一样,里面的方法不一样),但必定有一个方法constructor,这方法 constructor 指向 这个函数自己,如: prototype
定义 若是访问一个对象的属性时,先在这个对象的属性中查找,若是找不到,则沿着 ___ptoto___这个属性向上找寻prototype,若是__proto__这个所指对象中还没找到,就在__proto__所指对象的__proto__属性所指的prototype对象中去找,依次查找下去,造成相似一条链,称为原型链 理解如: 3d