美文网首页
玩转面试之JavaScript - instanceof原理

玩转面试之JavaScript - instanceof原理

作者: lianmeng | 来源:发表于2018-04-12 12:25 被阅读0次

    关于instanceof问题不多,通常会和typeof一起问。

    初阶问题:
    问题:typeof能干什么?

    回答:判断基本类型的,比如:Number, Boolean, Undefined, String, Null, 其他的引用类型和Null会返回object;

    问题:如果一个对象是数组,应该怎么判断?

    回答:用instanceof,比如对象是arr,用arr instanceof Array,如果返回ture就表示是数组,为false就不是。

    问题:那如果那个数组对象和Object对象去做运算应该返回什么呢?

    回答:true,因为Object是所有对象的基类。

    进阶问题

    问题:那下面代码中三个输出为何?

    function Person(name, age){
        this.name = name;
        this.age = age;
    }
    
    function Student(score){
        this.score = score;
    }
    
    Student.prototype = new Person('李明',22);
    var s = new Student(99);
    
    console.log(s instanceof Student);  //true
    console.log(s instanceof Person);  //true
    console.log(s instanceof Object);  //true
    

    问题:那instanceof的原理是什么?

    image

    这是关于上面这个函数的原型链图,我们可以看到对象s有一条属于自己的原型链,然而Student,Person,和Object对象的原型属性所指向的原型对象都在这条原型链上,所以答案就出来了:

    检测对象A是不是另一个对象B的实例的原理是:查看对象B的prototype属性指向的原型对象是否在对象A的原型链上,若在则返回true,若不在则返回false

    作者:良民

    链接:https://www.jianshu.com/p/5cfef021603d

    來源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:玩转面试之JavaScript - instanceof原理

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