是否在某个地方定义了ECMAScript规范所提到的内在对象创建顺序?



这是一个关于ECMA-262最新版本的问题。在https://tc39.es/ecma262/#sec-createintrinsics上面写着

必须有序地创建intrinsic及其属性,以避免对尚未创建的对象的任何依赖。

是否有一个特定的顺序定义,或者实现者必须自己弄清楚这个?

我问这个问题是因为这很好,而且很适合附录。但也许我不知怎么错过了。

谢谢你的阅读和热情的问候!

没有,没有具体的顺序。用户代码无法观察到它,所以它根本无关紧要。

实现者必须自己决定这一点。有很多可能的顺序。你甚至可以创建对象和它们的属性彼此分开,因为有循环引用(例如在.prototype.constructor之间,或者在FunctionObject之间)。

该部分包含以下文本:

每个字段的值都是一个新的对象值,完全递归地填充由子句19到28中每个对象的规范定义的属性值。

子句的顺序就是定义的顺序。

例如,首先定义全局对象,然后定义JS对象,定义函数,定义其他东西,如Errors和各种Error子类,等等。

相关内容

  • 没有找到相关文章

最新更新