在JavaScript中,原型與原型鏈都是老生常談的問題了,但也是面試常考項,相關文章已有很多,但大多晦澀難懂,在本文中,主要從幾個概念和圖出發,先分別理解原型、原型對象等概念,再來理清其中的關係。面試
prototype即爲原型,**_proto_**稱爲隱式原型。先後有兩個下劃線。它是對外隱藏的,咱們在程序開發過程當中,不會直接使用它。下面咱們來詳細理解:函數
函數的prototype屬性是一個對象----原型對象,這個對象中有有很對方法(根據函數的不一樣,裏面的方法不一樣),但必定有一個方法constructor,這方法 constructor 指向 這個函數自己,如: prototype
定義 若是訪問一個對象的屬性時,先在這個對象的屬性中查找,若是找不到,則沿着 ___ptoto___這個屬性向上找尋prototype,若是__proto__這個所指對象中還沒找到,就在__proto__所指對象的__proto__屬性所指的prototype對象中去找,依次查找下去,造成相似一條鏈,稱爲原型鏈 理解如: 3d