JavaScript是基於原型鏈的繼承的,忘掉類的繼承,從原型鏈入手。javascript
__proto__
屬性,,而且該屬性指向原型對象(prototype),但只有函數對象纔有 prototype 屬性prototype是函數的一個屬性(函數都有prototype屬性)指向原型對象。 _ proto_ 是一個對象擁有的內置屬性(請注意:prototype是函數的內置屬性,_ proto_ 是對象的內置屬性),_ proto_ 是JS內部使用尋找原型鏈的屬性。簡單來講,在 javascript 中每一個對象都會有一個 _ proto _,方法也是對象,也有這個屬性。 屬性,當咱們訪問一個對象的屬性時,若是這個對象內部不存在這個屬性,那麼他就會去 _ proto _ 裏找這個屬性,這個 _ proto _ 又會有本身的 _ proto _,因而就這樣一直找下去,也就是咱們平時所說的原型鏈的概念.java
表達式:L instance R;
則運算結果是: L.__proto__.__proto__... === R.prototype ?
運算符左邊最終結果是 instanceof運算時會遞歸查找L的原型鏈,即L.__proto__.__proto__.__proto__.__proto__...直到找到了或者找到頂層爲止。
運算符右邊只是找出了 右邊操做數的prototype是什麼。
因此一句話總結:instanceof檢測左側操做數的__proto__原型鏈上,是否存在右側的prototype原型。
複製代碼
__proto__
(非標準,隱式原型)屬性獲取原型對象。