8.2.2 CreateIntrinsics ( realmRec )

带参数 realmRec 的抽象操作 CreateIntrinsics 执行以下步骤:

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

results matching ""

    No results matching ""