8.2.2 CreateIntrinsics ( realmRec )
带参数 realmRec 的抽象操作 CreateIntrinsics 执行以下步骤:
- 使 intrinsics 变为 一个新的 Record。
- 设置 realmRec.[[Intrinsics]] 为 intrinsics。
- 使 objProto 变为 ObjectCreate(null).
- 设置 intrinsics.[[%ObjectPrototype%]] 为 objProto。
- 使 throwerSteps 变为 在 9.2.7.1 中为 %ThrowTypeError% 函数指定的算法步骤。
- 使 thrower 变为 CreateBuiltinFunction(realmRec, throwerSteps, null).
- 设置 intrinsics.[[%ThrowTypeError%]] 为 thrower。
- 使 noSteps 为一个空的算法步骤序列。
- 使 funcProto 变为 CreateBuiltinFunction(realmRec, noSteps, objProto)。
- 设置 intrinsics.[[%FunctionPrototype%]] 为 funcProto。
- 调用 thrower.[[SetPrototypeOf]](funcProto)。
- 执行 AddRestrictedFunctionProperties(funcProto, realmRec)。
- 使用表 7 中列出的值来设置内在函数的字段,这些值尚未在上面进行过处理。 字段名称是表中第一列中列出的名称。 每个字段的值是一个新的对象值,并且递归填充由第 18 - 26 节中每个对象的规范定义的属性值。 所有对象属性值都是新创建的对象值。 内置函数对象的所有值都是通过执行 CreateBuiltinFunction(realmRec,<steps>,<prototype>,<slots>)创建的,其中 <steps>是本规范提供的函数的定义,<prototype> 函数的 [[Prototype]] 内部插槽的值,<slot> 是函数的指定内部插槽的名称列表(如果有的话)。 内在函数及其属性的创建必须排序,以避免对尚未创建的对象有任何依赖性。
- 返回 intrinsics。