# HasMethod

如果指定的值具有指定名称的方法, 则返回非零数字.

    HasMethod := HasMethod(Value , Name, ParamCount)

## 参数

Value

  类型: Any

  除了 ComObject 之外的任何类型的任何值.

Name

  类型: 字符串

  要检查的方法名.

  省略这个参数来检查 Value 本身是否可调用.

ParamCount
  类型: 整数

  将被传递给方法或函数的参数数量. 如果指定, 可以查询该方法的 MinParams, MaxParams 和 IsVariadic 属性, 以验证它是否可以接受这个参数指定的数量. 如果这些属性不存在, 参数计数就不会被验证.

  这个计数不应该包括隐含的 `this` 参数.

  如果省略(或者参数数没有被验证), 则会对 Call 方法进行基本检查, 以验证该对象是可调用的.

## 返回值

类型: 整数(布尔值)

如果找到方法并通过验证(如果执行), 则返回 true, 否则返回 false.

## 备注

HasMethod 与 GetMethod 具有同样的限制.

此函数可用于评估某个值是否支持特定操作. 例如, 没有调用方法的值不能被调用或传递给 SetTimer, 而没有 __Enum 方法或 Call 方法的值不能传递给 For. 但是, 方法的存在并不保证可以调用它, 因为必须满足一些要求, 比如参数计数.

当指定 ParamCount 时, 该函数执行的验证等同于 SetTimer 等内置函数所执行的验证.

返回 false 并不一定表示不能调用该方法, 因为该值可能具有一个 __Call 元-函数. 但是, __Call 在特定的上下文中, 如 For 调用 __Enum 时, 不会触发调用. 如果 __Call 存在, 则无法检测它可能支持的方法.

函数支持原始值.

## 相关

Objects, HasBase, HasProp, GetMethod

## 示例

说明该函数的使用.

    MsgBox HasMethod(0, "HasMethod") ; 1
    MsgBox HasMethod(0, "Call") ; 0

dftg