使用javascript中的OLE Automation
6. 怎樣提高腳本程序的性能
自從我們處理重的對象模型(比如Word.Application)和應用程序實例,注意系統的資源示相當重要的。一旦我們完成對應用程序實例的處理,我們必須去掉它,以從內存重清除對象的實例。在Jscript中有唯一的方法來實現,它就是應用程序對象的Quit()方法,以下是一個例子:
var wdApp = new ActiveXObject("Word.Application");
wdApp.Quit(); // tidy up
在Visual Basic中,不象Jscript和VBScript,設置對象變量為空是不能清除內存的。而且,如果沒有其它對這個對象進行引用的話,這樣的賦值操作將導致應用程序的關閉。不幸的是,在JSCript中我們必須使用Quit()方法在我們已經使用對象的時候來將它從內存中清除。而設置變量為零長度的字符串或者為空只是一個好的練習,它並不能起到清除內存的作用。
在教程中放置點至少代碼了一個過程調用不得不在背景中被執行。最好得解決方法就是局部化高速緩沖對象引用。總得說來,這個技巧可以應用到對象以及Automation對象。下面看看腳本片段:
var exApp = new ActiveXObject("Excel.Application");
exApp.Workbooks(1).Worksheets(1).Cells(1, 1).Value = "First Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 2).Value = "Second Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 3).Value = "Third Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 4).Value = "Fourth Cell";
exApp.Workbooks(1).Worksheets(1).Cells(1, 5).Value = "Fifth Cell";
下面的代碼說明了以更有效的方法來實現:
var exApp = new ActiveXObject("Excel.Application");
var exWbook = exApp.Workbooks(1).Worksheets(1);
exWbook.Cells(1, 1).Value = "First Cell";
exWbook.Cells(1, 2).Value = "Second Cell";
exWbook.Cells(1, 3).Value = "Third Cell";
exWbook.Cells(1, 4).Value = "Fourth Cell";
exWbook.Cells(1, 5).Value = "Fifth Cell";