存在疑难:
- 什么是原型对象?
- 什么是构造函数?
- prototype/__proto__/constructor都是什么?
寻找答案:
2021/8/11 更新
prototype
存储的是一个援用,援用的是原型对象的地址__proto__
存储的是原型链指针,指向上一层的原型对象,即Child.__proto__ === Parent.prototype
- 构造函数是一个模板,生成实例对象的模板,Person就是一个构造函数
function Person() {}Person.prototype = { constructor: Person, __proto__: parent.prototype, // other prototype properties: ...}
- 函数的原型对象的结构器
constructor
默认指向函数自身 - 原型对象除了自有的原型属性外,为了实现继承,还有一个原型链指针
__proto__
,该指针指向上一层的原型对象 - 上一层的原型对象的构造仍然相似,这样利用
__proto__
始终指向 Object
的原型对象上 Object
的原型对象用 Object.prototype.__proto__ = null
示意原型链的最顶端- 如此便造成了javascript的原型链继承