内置属性的设置[[Value]]在哪里?

时间:2018-02-20 09:28:22

标签: ecmascript-6

如何设置内置方法的属性描述符?例如isPrototypeOf?我没有在规范中找到这样的地方。相反,但没有描述属性[[Value]]。听起来像这样:

  

"其他所有数据属性在第18至26条中描述   附件B.2中的属性{[[Writable]]:true,[[Enumerable]]:   false,[[Configurable]]:true}除非另有说明"

现在我们知道其他属性会有什么,但我们不知道[[Value]]中将设置什么值。您可以说[[Value]]中的值将设置为函数对象,您将是正确的。但是,我想通过规范知道这是设置内置属性的地方[[Value]]

1 个答案:

答案 0 :(得分:1)

  

但是,我想通过规范知道这是设置内置属性的地方[[Value]]

规范没有初始化全局对象的算法步骤,这是有道理的,因为在执行任何代码实际开始之前它们应该存在。

而不是简单地说明应该存在什么结构,例如在19.2.3 Properties of the Function Prototype Object中,它只是陈述

  

19.2.3.1 Function.prototype.apply(thisArg,argArray)

在标题中

,期望很明显它意味着apply函数是%FunctionPrototype%全局对象的属性。鉴于此,只有两种类型的属性,

  • 访问者属性
  • 数据属性

数据属性是包含值的显式简单属性。 Function.prototype.apply不是have get or set prefixuse an @@ prefix),这意味着此语句指定了数据字符串键控数据属性。根据定义,这意味着很明显[[Value]]是函数对象本身,因为没有其他地方可以放置它,[[Value]]是明确的正确选择。

您在17 ECMAScript Standard Built-in Objects州中链接的部分

  

第18至26条和附件B.2中描述的每个其他数据属性都具有{[[Writable]]:true,[[Enumerable]]:false,[[Configurable]]:true}属性,除非另有说明

只是填写其余的数据属性字段,因为为每个方法重复它们是没有意义的。