原型和原型链笔记

78 阅读1分钟
  1. __proto__和prototype区别?

    • 分别为隐式原型和显示原型。所有引用类型都具有隐式原型,而显示原型指向的是构造它的对象
    • Object的隐式原型为Null,也是给原型链一个终点,避免死循环
    • 隐式原型指向的是构造它的显示原型
    • 如果属性在当前对象本身没有就会往隐式原型上去找,如果没有就往原型对象找,直到尽头。
    • instanceof就是利用原型链,判断原型链上是否有
  2. 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__
    }
}