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__
(非标准,隐式原型)属性获取原型对象。