此函数返回给定的结构是否为给定的构造函数的"实例"。您可以使用此函数来检查用于创建结构的构造函数是否与您在第二个参数中提供的构造函数相同,或者它是否是给定构造函数的子构造函数。
这意味着,如果您的结构是从构造函数 B 创建的,并且构造函数 B 是构造函数 A 的子级,则调用 is_instanceof(struct_of_B,A) 将返回 true。
此函数通过检查给定结构的静态链来查看给定构造函数是否包含在该链中的任何位置。请参阅:静态结构
注意 如果使用 static_set 替换结构的静态链,它将修改该结构上此函数的行为,因为它会检查静态链以确定继承。除了将匿名结构作为层次结构的一部分重新加载的反序列化情况外,不建议使用 static_set。
is_instanceof(struct, constructor_name);
参数 | 类型 | 描述 |
---|---|---|
struct | Struct | 要检查的结构("实例") |
constructor_name | Function | 要检查的构造函数(该结构是此构造函数的实例吗?) |
function item() constructor {}
function potion() : item() constructor {}
function enemy() constructor {}
var _potion = new potion();
show_debug_message(is_instanceof(_potion, potion)); // true (1)
show_debug_message(is_instanceof(_potion, item)); // true (1)
show_debug_message(is_instanceof(_potion, enemy)); // false (0)
上面的代码显示了三个构造函数:item,potion,它是 item 的子类,以及 enemy,它是一个单独的构造函数。
它从 potion 构造函数创建一个结构。使用 is_instanceof(),我们可以检查新结构:
通过这种方式,您可以检查结构是否"是"某物,因为 potion 是 item,因此它为两个构造函数返回 true。然而,如果不是真的,反过来:item 不是 potion。