instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。 语法:object instanceof constructor 参数 object:某个实例对象 constructor:某个构造函数 描述:instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。 实现原理:查看对象B的prototype指向的对象是否在对象A的[[prototype]]链上。如果在,则返回true,如果不在则返回false

    1. function Car(make,model,year){
    2. this.make = make;
    3. this.model = model;
    4. this.year = year;
    5. }
    6. const auto = new Car('honda','Accord',1998);
    7. console.log('-----instanceof------')
    8. console.log(auto instanceof Car)
    9. console.log(auto instanceof Object)
    10. //Object.getPrototypeOf()方法返回指定对象的原型(内部[[Prototype]]属性的值)。
    11. function myInstanceof(obj,cons){
    12. if(typeof obj !=='object' ||!obj)return false;
    13. const _obj = Object.getPrototypeOf(obj);//obj.__proto__不推荐使用
    14. if(_obj!==cons.prototype){
    15. return myInstanceof(_obj,cons)
    16. }else{
    17. return true;
    18. }
    19. }
    20. console.log('-----myInstanceof------')
    21. console.log(myInstanceof(auto,Car))
    22. console.log(myInstanceof(auto,Object))
    23. console.log('myInstanceof([], Array):',myInstanceof([], Array))
    24. console.log('myInstanceof({}, Object):',myInstanceof({}, Object))

    image.png