Background explanatory material for this specification can be found in the domenic/proposal-function-implementation-hiding repository. See also the open issues.
A Directive Prologue is the longest sequence of
A Use Strict Directive is an "use strict"
or 'use strict'
. A
A Hide Implementation Directive is an "hide implementation"
or 'hide implementation'
. A
A of a given type of directive. However, an implementation may issue a warning if this occurs.
The a one of the above-defined directives and which occur in a a one of the above-defined directives and which does not have a meaning defined by the implementation.
With parameter scope.
"default"
).An anonymous export default
declaration.
An alternative semantics is provided in
The
A prototype
property is automatically created for every function defined using a
An arguments
, super
, this
, or new.target
. Any reference to arguments
, super
, this
, or new.target
within an super
, the function object created in step 4 is not made into a method by performing super
is always contained within a non-super
is accessible via the scope that is captured by the function object of the
With parameters object and optional parameter functionPrototype.
With parameters object and enumerable.
See
"get"
)."set"
).With parameter scope.
"prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "default"
).An anonymous export default
declaration.
With parameter object and enumerable.
"prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: The
With parameter scope.
"prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "default"
).An anonymous export default
declaration.
With parameter object and enumerable.
"prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: The
"name"
)."name"
).If the class definition included a name
static method then that method is not over-written with a name
data property for the class name.
With parameter scope.
"default"
).With parameters object and enumerable.
The abstract operation CreateDynamicFunction is called with arguments constructor, newTarget, kind, and args. constructor is the constructor function that is performing this action, newTarget is the constructor that new
was initially applied to, kind is either "normal"
, "generator"
, or "async"
, and args is a
"normal"
, then"%FunctionPrototype%"
."generator"
, then"%Generator%"
."async"
."%AsyncFunctionPrototype%"
.","
(a comma), and nextArgString."generator"
, then"async"
, then"generator"
, then"prototype"
, PropertyDescriptor{[[Value]]: prototype, [[Writable]]: "normal"
, perform "prototype"
property."anonymous"
)." anonymous("
, the code units of P, 0x000A (LINE FEED), the code units of ") {"
, 0x000A (LINE FEED), the code units of bodyText, 0x000A (LINE FEED), and the code units of "}"
.A prototype
property is automatically created for every function created using CreateDynamicFunction, to provide for the possibility that the function will be used as a constructor.
Kind | Prefix |
---|---|
"normal" | "function" |
"generator" | "function*" |
"async" | "async function" |
"async generator" | "async function*" |
Add the following bullet point:
"stack"
property which gives a stack trace must not include such functions in the stack trace. (This is not in any way meant to restrict debugging tools, or other non-runtime introspection mechanisms.)