JS中原型与原型链详解

JavaScript中,原型原型链都是老生常谈的问题了,但也是面试常考项,相关文章已有很多,但大多晦涩难懂,在本文中,主要从几个概念和图出发,先分别理解原型原型对象等概念,再来理清其中的关系。面试

1. 理解原型

prototype即为原型,**_proto_**称为隐式原型。先后有两个下划线。它是对外隐藏的,咱们在程序开发过程当中,不会直接使用它。下面咱们来详细理解:函数

1. 每一个函数都有一个prototype属性

1. 自定义函数

2. 构造器----Object、Array、Function、Boolean、String、Number等

每一个函数,都会有不少属性(由于函数也是对象,而对象是属性的集合),其中必定会有一个 prototype属性。 这个属性的名字是: prototype,它的值是一个对象,即为 原型对象

2. 每一个prototype(原型对象),都有一个方法constructor

函数的prototype属性是一个对象----原型对象,这个对象中有有很对方法(根据函数的不一样,里面的方法不一样),但必定有一个方法constructor这方法 constructor 指向 这个函数自己,如: prototype

3. 每一个对象都有一个 _proto_ 属性

每一个对象,都有一个 _proto_ 属性 特别的, 对于函数而言,因函数自己也是对象,因此,每一个函数都会有一个 prototype 和一个 _proto_ (每边两个下划线)属性。 结论: 对象的_proto_ 属性指向 建立这个对象的函数的 prototype

2. 原型链

定义 若是访问一个对象的属性时,先在这个对象的属性中查找,若是找不到,则沿着 ___ptoto___这个属性向上找寻prototype,若是__proto__这个所指对象中还没找到,就在__proto__所指对象的__proto__属性所指的prototype对象中去找,依次查找下去,造成相似一条链,称为原型链 理解如: 3d

咱们基本概念与关系已了解,下图可以帮咱们更好的理解原型原型链
其实,原型与原型链不难理解,只需记得上面加黑的结论及其关系,再加以理解,便可。
相关文章
相关标签/搜索