让我们创建一个空对象{}这个对象有一个构造器对象,它代表负责创建空对象的函数,构造器对象有一个原型对象,它负责为要创建的对象设置原型,这个原型对象本身有一个构造器属性,依此类推,你可以尽可能地使用这个(构造函数>原型>…)
问题是JavaScript如何管理所有这些无限嵌套的对象?
发布于 2021-09-21 23:00:58
constructor.prototype对象的constructor属性不是原型对象的constructor,而是constructor本身。
如果我有一个类,就说A
class A { }然后创建一个A实例
let a = new A();a的constructor属性将为A。也就是说,a是由A创建的。
a.constructor === A这也意味着:
a.constructor.prototype = A.prototype
// A.prototype = A.prototype
// since A === a.constructor现在,A.prototype的构造函数不是A.prototype.constructor,而应该是Object (或者更确切地说,您不需要构造函数来创建对象)。因为A.prototype的原型实际上是Object.prototype,而Object.prototype的原型是空的。
任何constructor的prototype属性都将是其构造对象的原型,而不是它所属的对象的原型。
如果你继续这样做:
a.prototype.constructor.prototype.constructor...您将在构造器原型和构造器本身周围圈圈,因为:
A.prototype.constructor = Ahttps://stackoverflow.com/questions/69276285
复制相似问题