2010年10月2日 星期六

vbscript 物件的解構函式不會在頁面關閉時呼叫

在VBScript裡面 可以寫下你自己物件的建構函式與解構函式
但是必須了解的一件事是 如果VBScript是跑在一個網頁上 網頁關閉時不會呼叫VBScript的解構函式
我本來以為 頁面關閉 物件銷毀 解構函式應該會執行 但是事實並不是如此
不過還好 還有 window.onbeforeunload 事件可以用
還是有機會在頁面結束前 作一些你想要執行的動作的

2010年10月1日 星期五

css 的 width 和 height 用百分比表示

在 css 裡面 元素的 width 和 height 可以用百分比表示
代表這個元素的寬和高為父元素的百分比
但是因為是使用父元素的寬和高來當基準 一定要確定父元素的寬和高也正確的設定了
否則可能會出現排版亂掉的情況

VBScript 和 JavaScript 的 string 是 pass by reference

在寫 scripting language 時 都知道變數通常可分為 primitive type 跟 reference type
primitive type 是 pass by value 而 reference type 是 pass by reference
可能語言會宣稱自己只有 pass by value (例如 java, 雖然他不是 scripting 語言)
但是保持一個觀念就是 reference type 的變數被傳進一個函式後
函式對這個變數做的改變在函式退出後還可以看的到

不過對 javascript 和 vbscript 來說 string 是特別的 string 不是物件 所以他是 primitive type
但是 string 又可以是任意長度的 所以如果 string 如果是 pass by value 將會很沒有效率
所以在實作上通常把他作為 pass by reference

如果只用 primitive type 和 reference type 來 分別 pass by value 和 pass by reference
可能會對 string 的 pass rule 搞錯了