美文网首页前端小记
理解js原型链__proto__与prototype的关系2

理解js原型链__proto__与prototype的关系2

作者: 革易 | 来源:发表于2021-06-07 17:16 被阅读0次

    参考内容:JavaScript高级程序设计(第四版)8.2.4

    1.prototype与constructor

    • 无论何时,只要创建一个函数,就会按照特定的规则为这个函数创建一个 prototype 属性(指向原型对象)。
    // 复制代码到浏览器控制台运行
    function HanShu(){}
    // 每个函数自带名为prototype的属性
    HanShu.prototype
    
    image.png
    • 默认情况下,所有原型对象自动获得一个名为 constructor 的属性,
      constructor 属性指回与之关联的构造函数
    // 函数prototype属性自带constructor属性
    HanShu.prototype.constructor
    // 自带constructor属性等于函数本身
    HanShu.prototype.constructor === HanShu
    
    image.png

    2.__proto__

    • Firefox、Safari 和 Chrome等浏览器会在每个对象上暴露__proto__属性,通过这个属性可以访问对象的原型
    var han1 = new HanShu()
    var han2 = new HanShu()
    // 通过__proto__ 属性可访问构造函数原型
    han1.__proto__ === HanShu.prototype
    han2.__proto__ === HanShu.prototype
    
    image.png
    // 通过__proto__属性可以访问原型
    HanShu instanceof Function
    HanShu.__proto__ === Function.prototype
    
    var a = 1
    var b = '2'
    var c = {}
    a.__proto__ === Number.prototype
    b.__proto__ === String.prototype
    c.__proto__ === Object.prototype
    
    image.png

    相关文章

      网友评论

        本文标题:理解js原型链__proto__与prototype的关系2

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