# HasBase

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

    HasBase := HasBase(Value, BaseObj)

## 参数

Value

  任何类型的任何值.

BaseObj

  类型: 对象

  要测试的潜在基对象.

## 返回值

类型: 整数(布尔值)

如果 BaseObj 在 Value 的基对象链中, 函数返回 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

dftg