2013-02-23 57 views
1

在vb腳本或VBA中,基於對象的編程有一個基本問題。一般來說,當我們使用面向對象編程在Java中,我們使用對象引用到任何一個變量或函數,如:Microsoft Vb腳本中基於對象的編程

Obj.Add() or Obj.i=5 

但在VBA和VB腳本,我們使用的東西一樣Obj.Property.Property或Obj.Method .Property like:

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

我懷疑這在邏輯上如何可能。

回答

2

如果你認爲屬性是子/函數/方法(如getter/setters)的表親,那麼這個謎應該消失。 '訪問對象成員'操作符(點)'工作'只要在左邊有一個對象(引用),在右邊有一個有效的成員 - 方法,變量/字段或屬性名稱。只要x.y表達式評估爲一個對象,鏈式點就「有效」,因此y.zz是該對象的成員。最後一個可能是一個非對象(右側沒有更多的點)。

>> 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 
+1

好了,你說如果的object.method()返回另一個對象,然後,我們可以用一個屬性或方法否則它會拋出需要一個錯誤的對象IT連鎖,我的理解對不對? – user1925406 2013-02-23 18:49:02

+0

@ user1925406 - 是的。 – 2013-02-23 19:01:23