js中的原型链

  • 原型链的本质是链表
  • 原型链上的节点是各种原型对象,比如
    Function.prototype Object.prototype
  • 原型链通过 __proto __ 属性链接各种原型对象

原型链长啥样子?

  • obj -> Object.prototype -> null
  • func -> Function.prototype -> Object.prototype -> null
  • arr -> Array.prototype -> Object.prototype -> null

如何实现一个 instance of ?

  • 知识点: 如果A沿着原型链能找到B.prototype, 那么A instance of B为 true
  • 解法: 遍历A的原型链,如果找到B.prototype,返回true,否则返回 false
const instanceOf = (A, b) => {
    let p = A
    while(p){
        if(p === b.prototype) return true
        p = p.__proto__
    }
    return false
}

console.log(instanceOf({}, Array)) // false
console.log(instanceOf({}, Object)) // true
console.log(instanceOf([], Object)) // true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。