-
__proto__和prototype区别?
- 分别为隐式原型和显示原型。所有引用类型都具有隐式原型,而显示原型指向的是构造它的对象
- Object的隐式原型为Null,也是给原型链一个终点,避免死循环
- 隐式原型指向的是构造它的显示原型
- 如果属性在当前对象本身没有就会往隐式原型上去找,如果没有就往原型对象找,直到尽头。
- instanceof就是利用原型链,判断原型链上是否有
-
instanceof实现
function my_instanceof(L, R) {
if (typeof L !== 'function') {
return false
}
while (true) {
if (L === R.prototype) {
return true
}
if (L === null) {
return false
}
L = L.__proto__
}
}