参考内容: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
网友评论