美文网首页前端
JavaScript中instanceof的模拟实现

JavaScript中instanceof的模拟实现

作者: agamgn | 来源:发表于2020-02-10 07:35 被阅读0次

一、前言

 instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。参考JavaScript中instanceof和typeof的区别

二、基本用法

语法:object instanceof constructor
参数:object某个实例对象,constructor某个构造函数
例子:

function C(){} 
function D(){} 

var o = new C();
console.log(o instanceof C);//true
console.log(o instanceof D);//false
console.log(o instanceof Object);//true
C.prototype={};
let o2=new C();
console.log(o2 instanceof C);//true
console.log(o instanceof C);//false,C.prototype 指向了一个空对象,这个空对象不在 o 的原型链上

三、实现

了解了instanceof 的用法之后,我们就开始自己模拟实现

function myinstanceof(target,origin){
    // 非object直接false
    if(typeof target !== 'object' || origin === null) return false;
    // 获取原型对象
    let proto=Object.getPrototypeOf(target);
    while(true){
        if(proto==null) return false;
        if(proto==origin.prototype) return true;
        proto=Object.getPrototypeOf(proto);
    }

}

// 验证
function C(){} 
var o = new C();
console.log(myinstanceof(o,C));//true

四、总结

本节代码

相关文章

网友评论

    本文标题:JavaScript中instanceof的模拟实现

    本文链接:https://www.haomeiwen.com/subject/pvzbxhtx.html