返回

JS 继承解析:__proto__、constructor、prototype 的内存、文字和图片阐述

前端

proto 属性

内存: proto 属性指向对象的原型对象。它是一个内部属性,不能直接访问或修改。

文本: 在文本表示中,proto 属性表示为对象的原型对象的引用。例如,以下代码创建了一个对象 obj,其 proto 属性指向 Object.prototype 对象:

const obj = {};
console.log(obj.__proto__); // Object.prototype

图片: 在内存图中,proto 属性可以表示为从对象指向其原型对象的箭头。

[图片:对象的 proto 属性指向原型对象]

constructor 属性

内存: constructor 属性指向创建对象的构造函数。它是一个函数类型的属性。

文本: 在文本表示中,constructor 属性表示为指向构造函数的引用。例如,以下代码创建了一个对象 obj,其 constructor 属性指向 Object 构造函数:

const obj = new Object();
console.log(obj.constructor); // Object

图片: 在内存图中,constructor 属性可以表示为从对象指向其构造函数的箭头。

[图片:对象的 constructor 属性指向构造函数]

prototype 属性

内存: prototype 属性指向构造函数的原型对象。它是构造函数的一个属性。

文本: 在文本表示中,prototype 属性表示为指向构造函数原型对象的引用。例如,以下代码创建了一个构造函数 Person,其 prototype 属性指向 Person.prototype 对象:

function Person() {}
console.log(Person.prototype); // Person.prototype

图片: 在内存图中,prototype 属性可以表示为从构造函数指向其原型对象的箭头。

[图片:构造函数的 prototype 属性指向原型对象]

关系

proto、constructor 和 prototype 属性之间存在以下关系:

  • 对象的 proto 属性指向其构造函数的 prototype 属性。
  • 构造函数的 prototype 属性指向构造函数的原型对象。
  • 原型对象的 proto 属性指向 Object.prototype 对象。

[图片:proto、constructor 和 prototype 属性之间的关系]

总结

proto、constructor 和 prototype 是 JavaScript 继承中不可或缺的三个属性。它们在内存、文本和图片中都有独特的表示方式。通过理解这些属性之间的关系,您可以深入掌握 JavaScript 继承机制。