js手写篇-手写instanceof 方法

instanceof

function F(){}
let f = new F();
console.log(f instanceof F) // true
------
console.log(2,Number) // true

instanceof是用于判断构造函数的prototype属性是否出现在某个实例对象的原型链上
实现:

function myInstanceof(left, right) {
  let proto = Object.getPrototypeOf(left);  // 获得原型左边的原型 
  let prototype = right.prototype;   // 获得右边的原型
  while(true) {
    if(!proto) return false; // 3、原型链的尽头是null 直到最后没有找到的话 说明左右不是一条‘路’的
    if(proto === prototype) return true; // 1、如果左右两个原型一样的话 说明右边的构造函数的prototype 在左边实例对象的原型链上
    proto = Object.getPrototypeOf(proto); // 2、如果没有比对成功那么继续往上找左边的原型
  }
}
function F(){}
let f = new F();
console.log(myInstanceof(f,F)); // true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值