JavaScript 手写仿instanceof

定义

MDN 中,描述是这样的。
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

实现一个仿instanceof功能的"_instanceof"函数,该函数可以判断首参的原型链中是否在第二个Fn构造函数的原型的 prototype 属性,核心步骤有:

  1. 获取首个对象参数的原型对象
  2. 获取Fn函数的原型对象
  3. 进入死循环,当两个参数的原型对象相等时返回true
  4. 当两个参数的原型对象不相等时获取首个对象参数原型的原型并且循环该步骤直到null时返回false
javascript 复制代码
const _instanceof = (target, Fn) => {
    let proto = target.__proto__
    let prototype = Fn.prototype
    while(true) {
        if(proto === Fn.prototype) return true
        if(proto === null) return false
        proto = proto.__proto__
    }
}

这里要了解一下原型与原型链

相关推荐
原来是猿3 分钟前
蓝桥备赛(四)- 数组(下)
开发语言·数据结构·c++·算法
心流时间6 分钟前
[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
java·开发语言·jvm
网络安全Ash9 分钟前
Python网络安全脚本
开发语言·python·web安全
什么什么什么?21 分钟前
el-input实现金额输入
javascript·vue.js·elementui
.猫的树33 分钟前
Java集合List快速实现重复判断的10种方法深度解析
java·开发语言·list·集合
刀客12339 分钟前
C++ STL(三)list
开发语言·c++
xiaoyustudiowww1 小时前
JSP + Servlet 实现 AJAX(纯JS版)
java·javascript·servlet
朔北之忘 Clancy1 小时前
2022 年 12 月青少年软编等考 C 语言五级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
折枝寄北1 小时前
(21)从strerror到strtok:解码C语言字符函数的“生存指南2”
c语言·开发语言
m0_748236581 小时前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php