美文网首页
js原型链中的__proto__和prototype

js原型链中的__proto__和prototype

作者: 一瓣山河 | 来源:发表于2019-03-12 21:54 被阅读0次

    在学习js原型链 的过程中,大家肯定碰到过属性__proto__prototype,下面就举例说明下构造函数、隐式原型(__proto__)、原型对象(prototype)、实例的关系:
    (感兴趣的小伙伴可以在命令行里敲入以下代码验证。)

    function F(name){
      this.name = name
    }
    var f = new F('jack');
    
    // 构造器
    F.prototype.constructor === F; 
    F.__proto__ === Function.prototype;
    Function.prototype.__proto__ === Object.prototype; 
    
    // 实例
    f.__proto__ === F.prototype;
    F.prototype.__proto__ === Object.prototype;
    
    Object.prototype.__proto__ === null; 
    

    总结:

    • 对象都有__proto__属性,称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型(prototype);
    • Object.prototype.__proto__ === null 是true;
    • 函数(Function)变量比较特殊,因为函数也是对象,它不仅有__proto__属性,还有prototype属性。
    • prototype属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指向原构造函数。

    相关文章

      网友评论

          本文标题:js原型链中的__proto__和prototype

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