☰
Pins
Table of Contents
介绍
1
范围
2
一致性
3
引用标准
◢
4
概述
4.1
Web 脚本
◢
4.2
ECMAScript 概述
4.2.1
Objects
4.2.2
ECMAScript 严格变体
◢
4.3
术语与定义
4.3.1
类型
4.3.2
原始值
4.3.3
对象
4.3.4
构造函数
4.3.5
原型
4.3.6
普通对象
4.3.7
异常对象
4.3.8
标准对象
4.3.9
内置对象
4.3.10
未定义的值
4.3.11
Undefined 类型
4.3.12
空值
4.3.13
Null 类型
4.3.14
Boolean 值
4.3.15
Boolean 类型
4.3.16
Boolean 对象
4.3.17
String 值
4.3.18
String 类型
4.3.19
String 对象
4.3.20
Number 值
4.3.21
Number 类型
4.3.22
Number 对象
4.3.23
无穷
4.3.24
NaN
4.3.25
Symbol 值
4.3.26
Symbol ��型
4.3.27
Symbol 对象
4.3.28
函数
4.3.29
内置函数
4.3.30
属性
4.3.31
方法
4.3.32
内置方法
4.3.33
特性
4.3.34
自身属性
4.3.35
继承属性
4.4
本规范的结构
◢
5
符号约定
◢
5.1
语法与词法
5.1.1
上下文无关文法
5.1.2
词法与正则文法
5.1.3
数字字符串文法
5.1.4
语法文法
5.1.5
文法标记法
◢
5.2
算法约定
5.2.1
抽象操作
5.2.2
语法导向操作
◢
5.2.3
运行时语义
5.2.3.1
隐式完成值
5.2.3.2
抛出一个异常
5.2.3.3
ReturnIfAbrupt
5.2.3.4
ReturnIfAbrupt 缩写
5.2.4
静态语义
5.2.5
数学操作
◢
6
ECMAScript 数据类型和值
◢
6.1
ECMAScript 语言类型
6.1.1
Undefined 类型
6.1.2
Null 类型
6.1.3
Boolean 类型
6.1.4
String 类型
◢
6.1.5
Symbol 类型
6.1.5.1
总所周知的 Symbol
6.1.6
Number 类型
◢
6.1.7
Object 类型
6.1.7.1
属性特性
6.1.7.2
对象的
内部方法
以及
内部槽
6.1.7.3
基本内部方法的不变量
6.1.7.4
总所周知的
内部对象
◢
6.2
ECMAScript规范类型
6.2.1
List 以及 Record 规范类型
6.2.2
Set 和 Relation 规范类型
◢
6.2.3
Completion Record 规范类型
◢
6.2.3.1
Await
6.2.3.1.1
Await Fulfilled Functions
6.2.3.1.2
Await Rejected Functions
6.2.3.2
NormalCompletion
6.2.3.3
ThrowCompletion
6.2.3.4
UpdateEmpty (
completionRecord
,
value
)
◢
6.2.4
Reference 规范类型
6.2.4.1
GetBase (
V
)
6.2.4.2
GetReferencedName (
V
)
6.2.4.3
IsStrictReference (
V
)
6.2.4.4
HasPrimitiveBase (
V
)
6.2.4.5
IsPropertyReference (
V
)
6.2.4.6
IsUnresolvableReference (
V
)
6.2.4.7
IsSuperReference (
V
)
6.2.4.8
GetValue (
V
)
6.2.4.9
PutValue (
V
,
W
)
6.2.4.10
GetThisValue (
V
)
6.2.4.11
InitializeReferencedBinding (
V
,
W
)
◢
6.2.5
Property Descriptor 规范类型
6.2.5.1
IsAccessorDescriptor (
Desc
)
6.2.5.2
IsDataDescriptor (
Desc
)
6.2.5.3
IsGenericDescriptor (
Desc
)
6.2.5.4
FromPropertyDescriptor (
Desc
)
6.2.5.5
ToPropertyDescriptor (
Obj
)
6.2.5.6
CompletePropertyDescriptor (
Desc
)
6.2.6
Lexical Environment 和 Environment Record 规范类型
◢
6.2.7
Data Blocks
6.2.7.1
CreateByteDataBlock (
size
)
6.2.7.2
CreateSharedByteDataBlock (
size
)
6.2.7.3
CopyDataBlockBytes (
toBlock
,
toIndex
,
fromBlock
,
fromIndex
,
count
)
◢
7
抽象操作
◢
7.1
类型转换
◢
7.1.1
ToPrimitive (
input
[ ,
PreferredType
] )
7.1.1.1
OrdinaryToPrimitive (
O
,
hint
)
7.1.2
ToBoolean (
argument
)
◢
7.1.3
ToNumber (
argument
)
◢
7.1.3.1
应用于 String 类型的 ToNumber
7.1.3.1.1
运行时语义: MV
7.1.4
ToInteger (
argument
)
7.1.5
ToInt32 (
argument
)
7.1.6
ToUint32 (
argument
)
7.1.7
ToInt16 (
argument
)
7.1.8
ToUint16 (
argument
)
7.1.9
ToInt8 (
argument
)
7.1.10
ToUint8 (
argument
)
7.1.11
ToUint8Clamp (
argument
)
◢
7.1.12
ToString (
argument
)
7.1.12.1
NumberToString (
m
)
7.1.13
ToObject (
argument
)
7.1.14
ToPropertyKey (
argument
)
7.1.15
ToLength (
argument
)
7.1.16
CanonicalNumericIndexString (
argument
)
7.1.17
ToIndex (
value
)
◢
7.2
测试与比较操作
7.2.1
RequireObjectCoercible (
argument
)
7.2.2
IsArray (
argument
)
7.2.3
IsCallable (
argument
)
7.2.4
IsConstructor (
argument
)
7.2.5
IsExtensible (
O
)
7.2.6
IsInteger (
argument
)
7.2.7
IsPropertyKey (
argument
)
7.2.8
IsRegExp (
argument
)
7.2.9
IsStringPrefix (
p
,
q
)
7.2.10
SameValue (
x
,
y
)
7.2.11
SameValueZero (
x
,
y
)
7.2.12
SameValueNonNumber (
x
,
y
)
7.2.13
抽象关系比较
7.2.14
抽象相等比较
7.2.15
严格相等比较
◢
7.3
对象具有的操作
7.3.1
Get (
O
,
P
)
7.3.2
GetV (
V
,
P
)
7.3.3
Set (
O
,
P
,
V
,
Throw
)
7.3.4
CreateDataProperty (
O
,
P
,
V
)
7.3.5
CreateMethodProperty (
O
,
P
,
V
)
7.3.6
CreateDataPropertyOrThrow (
O
,
P
,
V
)
7.3.7
DefinePropertyOrThrow (
O
,
P
,
desc
)
7.3.8
DeletePropertyOrThrow (
O
,
P
)
7.3.9
GetMethod (
V
,
P
)
7.3.10
HasProperty (
O
,
P
)
7.3.11
HasOwnProperty (
O
,
P
)
7.3.12
Call (
F
,
V
[ ,
argumentsList
] )
7.3.13
Construct (
F
[ ,
argumentsList
[ ,
newTarget
]] )
7.3.14
SetIntegrityLevel (
O
,
level
)
7.3.15
TestIntegrityLevel (
O
,
level
)
7.3.16
CreateArrayFromList (
elements
)
7.3.17
CreateListFromArrayLike (
obj
[ ,
elementTypes
] )
7.3.18
Invoke (
V
,
P
[ ,
argumentsList
] )
7.3.19
OrdinaryHasInstance (
C
,
O
)
7.3.20
SpeciesConstructor (
O
,
defaultConstructor
)
7.3.21
EnumerableOwnPropertyNames (
O
,
kind
)
7.3.22
GetFunctionRealm (
obj
)
7.3.23
CopyDataProperties (
target
,
source
,
excludedItems
)
◢
7.4
迭代器对象具有的操作
7.4.1
GetIterator (
obj
[ ,
hint
[,
method
] )
7.4.2
IteratorNext (
iteratorRecord
[ ,
value
] )
7.4.3
IteratorComplete (
iterResult
)
7.4.4
IteratorValue (
iterResult
)
7.4.5
IteratorStep (
iteratorRecord
)
7.4.6
IteratorClose (
iteratorRecord
,
completion
)
7.4.7
AsyncIteratorClose (
iteratorRecord
,
completion
)
7.4.8
CreateIterResultObject (
value
,
done
)
◢
7.4.9
CreateListIteratorRecord (
list
)
7.4.9.1
ListIterator next ( )
◢
8
Executable Code and Execution Contexts
◢
8.1
Lexical Environments
◢
8.1.1
Environment Records
◢
8.1.1.1
Declarative Environment Records
8.1.1.1.1
HasBinding (
N
)
8.1.1.1.2
CreateMutableBinding (
N
,
D
)
8.1.1.1.3
CreateImmutableBinding (
N
,
S
)
8.1.1.1.4
InitializeBinding (
N
,
V
)
8.1.1.1.5
SetMutableBinding (
N
,
V
,
S
)
8.1.1.1.6
GetBindingValue (
N
,
S
)
8.1.1.1.7
DeleteBinding (
N
)
8.1.1.1.8
HasThisBinding ( )
8.1.1.1.9
HasSuperBinding ( )
8.1.1.1.10
WithBaseObject ( )
◢
8.1.1.2
Object Environment Records
8.1.1.2.1
HasBinding (
N
)
8.1.1.2.2
CreateMutableBinding (
N
,
D
)
8.1.1.2.3
CreateImmutableBinding (
N
,
S
)
8.1.1.2.4
InitializeBinding (
N
,
V
)
8.1.1.2.5
SetMutableBinding (
N
,
V
,
S
)
8.1.1.2.6
GetBindingValue (
N
,
S
)
8.1.1.2.7
DeleteBinding (
N
)
8.1.1.2.8
HasThisBinding ( )
8.1.1.2.9
HasSuperBinding ( )
8.1.1.2.10
WithBaseObject ( )
◢
8.1.1.3
Function Environment Records
8.1.1.3.1
BindThisValue (
V
)
8.1.1.3.2
HasThisBinding ( )
8.1.1.3.3
HasSuperBinding ( )
8.1.1.3.4
GetThisBinding ( )
8.1.1.3.5
GetSuperBase ( )
◢
8.1.1.4
Global Environment Records
8.1.1.4.1
HasBinding (
N
)
8.1.1.4.2
CreateMutableBinding (
N
,
D
)
8.1.1.4.3
CreateImmutableBinding (
N
,
S
)
8.1.1.4.4
InitializeBinding (
N
,
V
)
8.1.1.4.5
SetMutableBinding (
N
,
V
,
S
)
8.1.1.4.6
GetBindingValue (
N
,
S
)
8.1.1.4.7
DeleteBinding (
N
)
8.1.1.4.8
HasThisBinding ( )
8.1.1.4.9
HasSuperBinding ( )
8.1.1.4.10
WithBaseObject ( )
8.1.1.4.11
GetThisBinding ( )
8.1.1.4.12
HasVarDeclaration (
N
)
8.1.1.4.13
HasLexicalDeclaration (
N
)
8.1.1.4.14
HasRestrictedGlobalProperty (
N
)
8.1.1.4.15
CanDeclareGlobalVar (
N
)
8.1.1.4.16
CanDeclareGlobalFunction (
N
)
8.1.1.4.17
CreateGlobalVarBinding (
N
,
D
)
8.1.1.4.18
CreateGlobalFunctionBinding (
N
,
V
,
D
)
◢
8.1.1.5
Module Environment Records
8.1.1.5.1
GetBindingValue (
N
,
S
)
8.1.1.5.2
DeleteBinding (
N
)
8.1.1.5.3
HasThisBinding ( )
8.1.1.5.4
GetThisBinding ( )
8.1.1.5.5
CreateImportBinding (
N
,
M
,
N2
)
◢
8.1.2
Lexical Environment Operations
8.1.2.1
GetIdentifierReference (
lex
,
name
,
strict
)
8.1.2.2
NewDeclarativeEnvironment (
E
)
8.1.2.3
NewObjectEnvironment (
O
,
E
)
8.1.2.4
NewFunctionEnvironment (
F
,
newTarget
)
8.1.2.5
NewGlobalEnvironment (
G
,
thisValue
)
8.1.2.6
NewModuleEnvironment (
E
)
◢
8.2
Realms
8.2.1
CreateRealm ( )
8.2.2
CreateIntrinsics (
realmRec
)
8.2.3
SetRealmGlobalObject (
realmRec
,
globalObj
,
thisValue
)
8.2.4
SetDefaultGlobalBindings (
realmRec
)
◢
8.3
Execution Contexts
8.3.1
GetActiveScriptOrModule ( )
8.3.2
ResolveBinding (
name
[ ,
env
] )
8.3.3
GetThisEnvironment ( )
8.3.4
ResolveThisBinding ( )
8.3.5
GetNewTarget ( )
8.3.6
GetGlobalObject ( )
◢
8.4
Jobs and Job Queues
8.4.1
EnqueueJob (
queueName
,
job
,
arguments
)
8.5
InitializeHostDefinedRealm ( )
8.6
RunJobs ( )
◢
8.7
Agents
8.7.1
AgentSignifier ( )
8.7.2
AgentCanSuspend ( )
8.8
Agent Clusters
8.9
Forward Progress
◢
9
Ordinary and Exotic Objects Behaviours
◢
9.1
Ordinary Object Internal Methods and Internal Slots
◢
9.1.1
[[GetPrototypeOf]] ( )
9.1.1.1
OrdinaryGetPrototypeOf (
O
)
◢
9.1.2
[[SetPrototypeOf]] (
V
)
9.1.2.1
OrdinarySetPrototypeOf (
O
,
V
)
◢
9.1.3
[[IsExtensible]] ( )
9.1.3.1
OrdinaryIsExtensible (
O
)
◢
9.1.4
[[PreventExtensions]] ( )
9.1.4.1
OrdinaryPreventExtensions (
O
)
◢
9.1.5
[[GetOwnProperty]] (
P
)
9.1.5.1
OrdinaryGetOwnProperty (
O
,
P
)
◢
9.1.6
[[DefineOwnProperty]] (
P
,
Desc
)
9.1.6.1
OrdinaryDefineOwnProperty (
O
,
P
,
Desc
)
9.1.6.2
IsCompatiblePropertyDescriptor (
Extensible
,
Desc
,
Current
)
9.1.6.3
ValidateAndApplyPropertyDescriptor (
O
,
P
,
extensible
,
Desc
,
current
)
◢
9.1.7
[[HasProperty]] (
P
)
9.1.7.1
OrdinaryHasProperty (
O
,
P
)
◢
9.1.8
[[Get]] (
P
,
Receiver
)
9.1.8.1
OrdinaryGet (
O
,
P
,
Receiver
)
◢
9.1.9
[[Set]] (
P
,
V
,
Receiver
)
9.1.9.1
OrdinarySet (
O
,
P
,
V
,
Receiver
)
9.1.9.2
OrdinarySetWithOwnDescriptor (
O
,
P
,
V
,
Receiver
,
ownDesc
)
◢
9.1.10
[[Delete]] (
P
)
9.1.10.1
OrdinaryDelete (
O
,
P
)
◢
9.1.11
[[OwnPropertyKeys]] ( )
9.1.11.1
OrdinaryOwnPropertyKeys (
O
)
9.1.12
ObjectCreate (
proto
[ ,
internalSlotsList
] )
9.1.13
OrdinaryCreateFromConstructor (
constructor
,
intrinsicDefaultProto
[ ,
internalSlotsList
] )
9.1.14
GetPrototypeFromConstructor (
constructor
,
intrinsicDefaultProto
)
◢
9.2
ECMAScript Function Objects
◢
9.2.1
[[Call]] (
thisArgument
,
argumentsList
)
9.2.1.1
PrepareForOrdinaryCall (
F
,
newTarget
)
9.2.1.2
OrdinaryCallBindThis (
F
,
calleeContext
,
thisArgument
)
9.2.1.3
OrdinaryCallEvaluateBody (
F
,
argumentsList
)
9.2.2
[[Construct]] (
argumentsList
,
newTarget
)
9.2.3
FunctionAllocate (
functionPrototype
,
strict
,
functionKind
)
9.2.4
FunctionInitialize (
F
,
kind
,
ParameterList
,
Body
,
Scope
)
9.2.5
FunctionCreate (
kind
,
ParameterList
,
Body
,
Scope
,
Strict
[ ,
prototype
] )
9.2.6
GeneratorFunctionCreate (
kind
,
ParameterList
,
Body
,
Scope
,
Strict
)
9.2.7
AsyncGeneratorFunctionCreate (
kind
,
ParameterList
,
Body
,
Scope
,
Strict
)
9.2.8
AsyncFunctionCreate (
kind
,
parameters
,
body
,
Scope
,
Strict
)
◢
9.2.9
AddRestrictedFunctionProperties (
F
,
realm
)
9.2.9.1
%ThrowTypeError% ( )
9.2.10
MakeConstructor (
F
[ ,
writablePrototype
[ ,
prototype
] ] )
9.2.11
MakeClassConstructor (
F
)
9.2.12
MakeMethod (
F
,
homeObject
)
9.2.13
SetFunctionName (
F
,
name
[ ,
prefix
] )
9.2.14
SetFunctionLength (
F
,
length
)
9.2.15
FunctionDeclarationInstantiation (
func
,
argumentsList
)
◢
9.3
Built-in Function Objects
9.3.1
[[Call]] (
thisArgument
,
argumentsList
)
9.3.2
[[Construct]] (
argumentsList
,
newTarget
)
9.3.3
CreateBuiltinFunction (
steps
,
internalSlotsList
[ ,
realm
[ ,
prototype
] ] )
◢
9.4
Built-in Exotic Object Internal Methods and Slots
◢
9.4.1
Bound Function Exotic Objects
9.4.1.1
[[Call]] (
thisArgument
,
argumentsList
)
9.4.1.2
[[Construct]] (
argumentsList
,
newTarget
)
9.4.1.3
BoundFunctionCreate (
targetFunction
,
boundThis
,
boundArgs
)
◢
9.4.2
Array Exotic Objects
9.4.2.1
[[DefineOwnProperty]] (
P
,
Desc
)
9.4.2.2
ArrayCreate (
length
[ ,
proto
] )
9.4.2.3
ArraySpeciesCreate (
originalArray
,
length
)
9.4.2.4
ArraySetLength (
A
,
Desc
)
◢
9.4.3
String Exotic Objects
9.4.3.1
[[GetOwnProperty]] (
P
)
9.4.3.2
[[DefineOwnProperty]] (
P
,
Desc
)
9.4.3.3
[[OwnPropertyKeys]] ( )
9.4.3.4
StringCreate (
value
,
prototype
)
9.4.3.5
StringGetOwnProperty (
S
,
P
)
◢
9.4.4
Arguments Exotic Objects
9.4.4.1
[[GetOwnProperty]] (
P
)
9.4.4.2
[[DefineOwnProperty]] (
P
,
Desc
)
9.4.4.3
[[Get]] (
P
,
Receiver
)
9.4.4.4
[[Set]] (
P
,
V
,
Receiver
)
9.4.4.5
[[Delete]] (
P