SOURCE

function myInstanceof(left,right){
    if(typeof left!=='object'||typeof left===null) return false;
    let proto=Object.getPrototypeOf(left);
    while(true){
        if(proto===null) return false;
        if(proto===right.prototype) return true;
        proto=Object.getPrototypeOf(proto);
    }
}
// 递归
function myInstanceofRecursion(left,right){
    if(typeof left!=='object'||typeof left===null) return false;
    let proto=Object.getPrototypeOf(left);
    if(proto===null) return false;
    if(proto===right.prototype) return true;
    myInstanceofRecursion(proto,right)
} 

function Animal(){}
let cat=new Animal();
console.log(myInstanceofRecursion("111", String)); //false
console.log(myInstanceofRecursion(new String("111"), String));//true
console.log(myInstanceofRecursion(cat,Animal))
console 命令行工具 X clear

                    
>
console