首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >但是JavaScript是如何管理原型属性的呢?

但是JavaScript是如何管理原型属性的呢?
EN

Stack Overflow用户
提问于 2021-09-21 22:36:04
回答 1查看 52关注 0票数 1

让我们创建一个空对象{}这个对象有一个构造器对象,它代表负责创建空对象的函数,构造器对象有一个原型对象,它负责为要创建的对象设置原型,这个原型对象本身有一个构造器属性,依此类推,你可以尽可能地使用这个(构造函数>原型>…)

问题是JavaScript如何管理所有这些无限嵌套的对象?

EN

回答 1

Stack Overflow用户

发布于 2021-09-21 23:00:58

constructor.prototype对象的constructor属性不是原型对象的constructor,而是constructor本身。

如果我有一个类,就说A

代码语言:javascript
复制
class A { }

然后创建一个A实例

代码语言:javascript
复制
let a = new A();

aconstructor属性将为A。也就是说,a是由A创建的。

代码语言:javascript
复制
a.constructor === A

这也意味着:

代码语言:javascript
复制
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的原型是空的。

任何constructorprototype属性都将是其构造对象的原型,而不是它所属的对象的原型。

如果你继续这样做:

a.prototype.constructor.prototype.constructor...您将在构造器原型和构造器本身周围圈圈,因为:

代码语言:javascript
复制
A.prototype.constructor = A
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69276285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档