diff --git a/spec.html b/spec.html index 77252acaaae..4050f1733ff 100644 --- a/spec.html +++ b/spec.html @@ -11593,65 +11593,12 @@
The built-in function objects defined in this specification may be implemented as either ECMAScript function objects (
If a built-in function object is implemented as an exotic object it must have the ordinary object behaviour specified in
If a built-in function object is implemented as an ECMAScript function object, it must have all the internal slots described in
If a built-in function object is implemented as an exotic object, it must have the ordinary object behaviour specified in
Unless otherwise specified every built-in function object has the %Function.prototype% object as the initial value of its [[Prototype]] internal slot.
The behaviour specified for each built-in function via algorithm steps or other means is the specification of the function body behaviour for both [[Call]] and [[Construct]] invocations of the function. However, [[Construct]] invocation is not supported by all built-in functions. For each built-in function, when invoked with [[Call]], the [[Call]] _thisArgument_ provides the *this* value, the [[Call]] _argumentsList_ provides the named parameters, and the NewTarget value is *undefined*. When invoked with [[Construct]], the *this* value is uninitialized, the [[Construct]] _argumentsList_ provides the named parameters, and the [[Construct]] _newTarget_ parameter provides the NewTarget value. If the built-in function is implemented as an ECMAScript function object then this specified behaviour must be implemented by the ECMAScript code that is the body of the function. Built-in functions that are ECMAScript function objects must be strict functions. If a built-in constructor has any [[Call]] behaviour other than throwing a *TypeError* exception, an ECMAScript implementation of the function must be done in a manner that does not cause the function's [[IsClassConstructor]] internal slot to have the value *true*.
Built-in function objects that are not identified as constructors do not implement the [[Construct]] internal method unless otherwise specified in the description of a particular function. When a built-in constructor is called as part of a `new` expression the _argumentsList_ parameter of the invoked [[Construct]] internal method provides the values for the built-in constructor's named parameters.
Built-in functions that are not constructors do not have a *"prototype"* property unless otherwise specified in the description of a particular function.
- -In addition to [[Extensible]] and [[Prototype]], built-in function objects also have the internal slots listed in
- Internal Slot - | -- Type - | -- Description - | -
---|---|---|
- [[Realm]] - | -- Realm Record - | -- The realm in which the function was created and which provides any intrinsic objects that are accessed when evaluating the function. - | -
- [[ScriptOrModule]] - | -- Null - | -- The script or module in which the function was created. - | -
- [[InitialName]] - | -- String - | -
- The initial name of the built-in function object. Used by |
-
If a built-in function object is implemented as an ECMAScript function it must also have the internal slots listed in
If a built-in function object is not implemented as an ECMAScript function it must provide [[Call]] and [[Construct]] internal methods that conform to the following definitions:
The abstract operation CreateBuiltinFunction takes arguments _steps_, _length_, _name_, and optional arguments _additionalInternalSlotsList_ (a List of names of internal slots), _realm_, _prototype_, and _prefix_. _additionalInternalSlotsList_ contains the names of additional internal slots that must be defined as part of the object. This operation creates a built-in function object. It performs the following steps when called:
+The abstract operation CreateBuiltinFunction takes arguments _steps_, _length_, _name_, and _additionalInternalSlotsList_ (a List of names of internal slots) and optional arguments _realm_, _prototype_, and _prefix_. _additionalInternalSlotsList_ contains the names of additional internal slots that must be defined as part of the object. This operation creates a built-in function object. It performs the following steps when called: