__proto__、prototype与constructor
本文最后更新于:2022年10月12日 上午
__proto__
、prototype
与constructor
__proto__
__proto__
属性在ES标准定义中的名字是[[Prototype]]
__proto__
和constructor
属性是对象所独有的prototype
属性是函数所独有的- 由于JavaScript中函数也是对象,所以函数也拥有
__proto__
和constructor
属性
- 由于JavaScript中函数也是对象,所以函数也拥有
原型链通过__proto__
一级一级向上寻找,直到null
prototype
函数的prototype
属性指向该函数的原型对象(从一个函数指向一个对象),即当这个函数作为构造函数时所创建的实例的原型对象
作用:让该函数所实例化的对象们可以找到公用的属性和方法
constructor
只有prototype对象自身拥有constructor
属性
对象的constructor
属性指向该对象的构造函数(从一个对象指向一个函数),“每个对象都有构造函数”(意思是每个对象都可以找到其对应的constructor
属性)
由Function
创建的函数对象较为特殊,该函数对象的constructor
属性指向其构造函数Function
,此时该函数对象相当于Function
的一个实例
1 |
|
该函数对象的原型对象,即.prototype
的constructor
属性指向该函数对象
对一个对象,有
对象.__proto__ === 其构造函数.prototype
其构造函数.prototype.constructor === 其构造函数本身
使用对象字面量
= {}
创建新对象相当于= new Object()
,其对应的construcor
属性即指向Object
__proto__、prototype与constructor
https://elcfin.github.io/2021/11/09/prototype与constructor/