9.2.1 [[Call]] ( thisArgument, argumentsList )

ECMAScript 函数对象 F[[Call]] 内部方法使用参数 thisArgument argumentsList(一个 ECMAScript 语言值列表)进行调用。 采取以下步骤:

  1. 断言:F 是一个 ECMAScript 函数对象。
  2. 如果 F.[[FunctionKind]] 是 "classConstructor",则抛出一个 TypeError 错误。
  3. 使 callerContext 变为正在运行的执行上下文。
  4. 使 calleeContext 变为 PrepareForOrdinaryCall(F, undefined)。
  5. 断言:calleeContext 是现在正在运行的执行上下文。
  6. 执行 OrdinaryCallBindThis(F, calleeContext, thisArgument)。
  7. 使 result 变为 OrdinaryCallEvaluateBody(F, argumentsList)
  8. 从执行上下文堆栈中删除 calleeContext,并将 callerContext 恢复为正在运行的执行上下文
  9. 如果 result.[[Type]] 被返回,返回 NormalCompletion(result.[[Value]])
  10. ReturnIfAbrupt(result)。
  11. 返回 NormalCompletion(undefined)。

注意:当在步骤 8 中从执行上下文堆栈中删除 calleeContext 时,如果它被中止并保留以供以后由可访问的存取器对象恢复,则不能被销毁。

results matching ""

    No results matching ""