prototype 小结
- 构造函数有prototype属性指向其对应的原型对象:
// aaa 是构造函数
function aaa() {}
aaa.prototype
- prototype对象有constructor属性指向其对应的构造函数:
function aaa() {}
aaa.prototype.constructor === aaa // true
- 实例对象没有prototype对象,通过__proto__访问其构造函数的prototype对象:
let a = new aaa()
a.__proto__ === aaa.prototype // true
- 构造函数可以改变prototype对象,相应的,那么实例后对象的构造函数为改变后prototype对象指向的构造函数,而非原构造函数:
function aaa() {}
aaa.prototype = function bbb() {}
c.constructor === aaa.prototype.constructor // true
c.constructor === aaa // false
- prototype(原型对象)可以被继承,上面可以定义属性和方法。