首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡在无限constructor.prototype.constructor.prototype链中

卡在无限constructor.prototype.constructor.prototype链中
EN

Stack Overflow用户
提问于 2014-10-04 11:46:40
回答 1查看 569关注 0票数 4

我正在阅读斯托扬·斯特凡诺夫的面向对象的javascript书,我完全搞不懂。假设我有一个功能:

代码语言:javascript
复制
function Test(){
  this.greeting = 'hello';
}

Test.prototype.farewell = "bye"

test = new Test();

test.constructor; //returns Test()

test.constructor.prototype; //returns {farewell:"bye"}

test.constructor.prototype.constructor; //returns Test()

这本书说,由于原型是一个对象,它必须有一个构造函数。但正如上面的例子所示,原型的构造函数与test的构造函数相同,即Test()

这是意料之中吗?

这本书继续写道:“这可能会持续一段时间,但最终您将得到内置的Object()对象,它是最高级别的父对象”。但是,我似乎陷入了一个无限循环中,因为链中的所有构造函数都返回Test(),所以我如何才能到达Object()

有人能帮我把事情弄清楚吗?(我甚至不知道为什么这些锁链有用。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-04 12:04:41

你说的完全正确。prototype对象得到了错误的构造函数,因为它适合使用它作为原型的东西,而不是它自己。这意味着在这方面,原型不是常规的对象。它们有一个特殊的角色,就像一个类对象。

如果您还没有注意到,那么您的告别就像一个经典类的静态成员。它不是每个对象都存在的变量。

如果书上说你可以沿着构造函数的指针向上走,那就错了。您可以沿着getPrototypeOf()沿着链向上移动。{在这里编辑了错误的下面的东西。}

至于为什么这些都是有用的,当你有令人敬畏的鸭子打字自由时,我不能回答。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26192489

复制
相关文章

相似问题

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