Microsoft Vb脚本中基于对象的编程

时间:2013-02-23 17:17:40

标签: vba vbscript

我在vb脚本或VBA中基于对象的编程有一个基本问题。通常,当我们在Java中使用面向对象编程时,我们使用对变量或函数的对象引用,例如:

Obj.Add() or Obj.i=5

但是在VBA和VB脚本中我们使用像Obj.Property.Property或Obj.Method.Property这样的东西:

Set sib = Tchilds.item(j).childNodes 'where item is a method defined in DOM.

我怀疑这在逻辑上是怎么可能的。

1 个答案:

答案 0 :(得分:2)

如果你认为属性是子/函数/方法的表兄弟(比如getters / setters)那么神秘应该消失。 “访问对象成员”运算符(点)“工作”,只要在左侧有(对引用)对象,在右侧有一个有效的成员 - 方法,变量/字段或属性 - 名称。只要x.y表达式计算对象,链接点就可以“起作用”,因此y.z z中的点是该对象的成员。最后一个可能是非对象(右侧没有其他点)。

>> Set oFS = CreateObject("Scripting.FileSystemObject")
>> Set oFld = oFS.GetFolder(".") -- method .GetFolder returns Folder object
>> Set oFiles = oFld.Files -- Property .Files returns collection object
>> WScript.Echo oFiles.Count -- oFiles has a simple/non-object member .Count
>>
2
>> WScript.Echo oFiles.Count.ToString() -- .Count is not an object, but a number
>>
Error Number:       424
Error Description:  Object required
>> WScript.Echo oFS.GetFolder(".").Files.Count -- chaining
                obj obj            obj   var
>>
2