美文网首页前端小记
理解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