构造函数
定义: 和普通函数没区别,为了区分功能两者功能,通过new关键字来调用的函数,称为构造函数,首字母常习惯大写
功能: 构造函数主要用于初始化对象
原型
定义:
- 构造函数中都默认有prototype原型对象,包含两个属性:constructor和_proto_
- constructor属性指向的prototype所在构造函数本身
- _proto_属性指向上一个原型的prototype原型
为什么实例化的_proto_ 与 构造函数的prototype相等?主要在new操作符的实现过程
new操作符的实现
new操作符实例化出来的,默认含有_proto_,指向构造函数的prototype
由下图51行可以看到,通过给实例化对象添加_proto赋值构造函数的prototype,所以可以解释上面 ‘原型-定义中的第3条’,实例化的_proto_ === 构造函数的prototype
原型链
定义: 每个对象都有原型对象,通过_proto_指针指向上一个原型,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一层一层,最终指向 null
先看代码:
综合上面的知识可知原型链的顺序为:
- 首先通过new操作符,实例化构造函数,实例中含有_proto_属性(等于上一个构造函数Person2的prototype)
- 再通过Person2的_proto_指向上一层Object的prototype
- Object.proto 为null
图片: