美文网首页
原型链面试题

原型链面试题

作者: jluemmmm | 来源:发表于2020-08-16 15:03 被阅读0次
    function Parent(){
       this.a = 'Parent'
    }
    function Tom() {
       this.a = 'Tom'
    }
    Parent.__proto__.print = function(){
       console.log(this.a)
    }
    Parent.print()
    Tom.print()
    var child = new Parent()
    child.print()
    // undefined
    // undefined
    // Uncaught TypeError: child.print is not a function
    

    ParentTom都是Function的实例,因此相当于在Function.prototype上面挂载了一个print方法,因此Parent.print()可以调用到这个方法,但是没有返回值,一个原因是 Parent方法没有执行,一个是因为this此时指向的是ParentParent方法上没有a属性,而child本身是基于构造函数创建了一个对象,child.__proto__.__proto__ === Object.prototype,因此在其原型链上找不到print方法。

    • instanceof 构造函数的属性是否出现在某个实例的原型链上
    • isPrototypeOf 测试一个对象是否在另一个对象的原型链上
    • hasOwnProperty 判断一个对象自身属性中是否有某个属性
    • getPrototypeOf 返回指定对象的原型

    相关文章

      网友评论

          本文标题:原型链面试题

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