我在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.
我怀疑这在逻辑上是怎么可能的。
答案 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