7.3.20 SpeciesConstructor ( O, defaultConstructor )
抽象操作 SpeciesConstructor 用于检索应该用于创建从参数对象 O 派生的新对象的构造函数。如果从 O 开始找不到构造函数@@ species属性,则 defaultConstructor 参数是要使用的构造函数。 抽象操作执行以下步骤:
- 断言:IsPropertyKey(P) 为 true。
- 使 C 变为? Get(O, "constructor").
- 如果 C 为 undefined,则返回 defaultConstructor.
- 如果 Type(C) 不是 Object 类型,抛出一个 TypeError 错误。
- 使 S 变为 ? Get(C, @@species)。
- 如果 S 为 undefined 或 null,返回 defaultConstructor。
- 如果 IsConstructor(S) 为 true,则返回 S。
- 抛出一个 TypeError 错误。