实现 JavaScript instanceOf 功能
instanceOf
是通过 原型 进行判断的,可以遍历原型链,判断是否是原型。 我使用了递归调用,如果left 的变成null ,说明原型链并未找到。
同时 instanceOf
的右侧 必须为函数 或者对象,不能为基本类型。
function myInstanceOf(left, right) { if(!left) return false if((typeof right !== 'function' && typeof right !== 'object') || right === null) { throw new Error(`Right-hand side must be an object`) } return left.__proto__ === right.prototype || myInstanceOf(left.__proto__, right) } // test class A{} class B{} const a = new A() console.log(myInstanceOf(a, A)) console.log(myInstanceOf(a, Object)) console.log(myInstanceOf(a, {})) console.log(myInstanceOf(a, 1))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论