如何重写一个instanceof方法,8行代码教你搞定

本文介绍了如何重写JavaScript的instanceof方法,通过理解原型链的工作原理,实现自定义的_instanceof函数。示例中展示了创建构造器Box,实例化b1,然后使用重写后的_instanceof方法检查b1是否属于Box类型,结果为true。
摘要由CSDN通过智能技术生成

其实重写一个instanceof方法是很简单 我们只需要弄懂原型链就好了,他是通过原型链去查找的,接下来我们看代码

 // 创建一个构造器
    function Box() {}

    // 实例
    const b1 = new Box();

    // 这是原生的
    // console.log(b1 instanceof Box); // true

    // 接下来我们重写instanceof方法 我们只能用一个函数去重写
    function _instanceof(obj, type) {
      // 拿到实例的原型对象
      let protoObj = obj.__proto__;
      // 进行while循环
      while (protoObj) {
        // 判断实例原型对象是否等于我们传进来的构造器
        if (protoObj === type.prototype) return true;

        // 走到这里说明该实例不等于这次的原型对象
        // 我们再向上查找
        protoObj = protoObj.__proto__;
      }

      // 如果都没有的话 我们就会返回false
      return false;
    }
    console.log(_instanceof(b1, Box)); // true
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宇爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值