7.3.19 OrdinaryHasInstance ( C, O )
抽象操作 OrdinaryHasInstance 实现默认算法,用于确定对象 O 是否继承自构造函数 C 提供的实例对象继承路径。此抽象操作执行以下步骤:
- 如果 IsCallable(C) 为 false,则返回 false。
- 如果 C 有一个 [[BoundTargetFunction]] 内部插槽,那么
a. 如果 C 有一个 [[BoundTargetFunction]] 内部插槽,那么 b. 返回 ? InstanceofOperator(O, BC)。
3.如果 Type(O) 不是 Object,返回 false。
4.使 P 变为 ? Get(C, "prototype")。
5.如果 Type(P) 不是 Object,抛出一个 TypeError 错误。
6.重复
a. 使 O 变为 ? O.[[GetPrototypeOf]]()。
b. 如果 O 为 null,返回 false。
c. 如果 SameValue(P, O) 为 true,则返回 true。