constructor、__proto__、prototype关系的梳理

  prototype属性他是函数独有的,在函数创建时,会同时创建这个函数的prototype对象,其含义是函数的原型对象。例如 函数 Fu 创建的实例化对象 F ,F.__proto__ === Fu.prototype。其意义是在prototype对象中定义的属性和方法,可以共享给所有该函数创建的实例。

  constructor属性是对象拥有的,他指向该对象的构造函数。所以如上述例子中的Fu.prototype 其 constructor就是Fu本身,而Fu创建的对象F其constructor也是Fu。而Fu的constructor是Function(所有的函数和对象最后都会指向Function,而Function的constructor是他本身)

  __proto__属性是对象拥有的,他指向构造函数的原型对象prototype,如上述例子,F.__proto__是Fu的原型对象prototype,而Fu.__proto__是Function.prototype,所有对象__proto__的终点都是Function.prototype,包括Function本身也是。

总结:

  1. __proto__constructor是对象独有的,由于函数也是一种对象,所以也拥有__proto__constructor属性,使用时要注意将函数作为对象使用,方便理解记忆。
  2. __proto__的作用是:当在该对象中找不到相应的属性,他会向着__proto__上查找,如果找不到则继续向上查找直到其终点返回Null,利用__proto__属性串联起来的这条链路即所谓的原型链。
posted @ 2022-07-17 16:45  Tdom  阅读(61)  评论(0编辑  收藏  举报