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