HasBase

如果指定的值派生自指定的基对象, 则返回非零数字.

HasBase := HasBase(Value, BaseObj)

参数

Value

任何类型的任何值.

BaseObj

类型: 对象

要测试的潜在基对象.

返回值

类型: 整数(布尔值)

如果 BaseObjValue 的基对象链中, 函数返回 true, 否则返回 false.

备注

下面的代码大致相当于这个函数:

MyHasBase(Value, BaseObj) {
    b := Value
    while b := ObjGetBase(b)
        if b = BaseObj
            return true
    return false
}

例如, 如果 Obj 是数组或任何派生类的实例, 则 HasBase(Obj, Array.Prototype) 为 true. 这与 Obj is Array 执行的检查相同; 但是, 实例可以基于其他实例, 而 is 需要一个类.

HasBase 同时接受对象和原始值. 例如, HasBase(1, 0.base) 返回 true.

Objects, Obj.Base, ObjGetBase, HasMethod, HasProp

示例

说明函数的用法.

thebase := {key: "value"}
derived := {base: thebase}
MsgBox HasBase(thebase, derived) ; 0
MsgBox HasBase(derived, thebase) ; 1
unixetc