javascript|教程
使用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";