自訂物件

Javascript的自訂物件:

Javascript並沒有一般物件導向語言所擁有的類別,但是他依然能藉由建構函式來重複建立物件。身為一個業餘的Javascript愛好者,我個人覺得這很特別,函式本身就是物件,然後我們用物件來建立物件,嘿嘿。而事實上建構函式與利用建構函式建立的物件關係很微妙。會這樣說是因為建構函式跟建立出來的物件可以算是完全不同的物件。但是物件的繼承其實是由建構函式的prototype屬性來完成,當然,在這裡先把這議題先留置,我們還是回到自訂物件本身的做法。

閱讀全文:自訂物件

閉包(Closure)的細節(四):閉包效能與prototype

閉包(Closure)的細節(三),閉包效能與prototype:

使用閉包時得注意,因為閉包有效能上的影響,主要是反映在處理速度與記憶體的占用。因此確定目的是否確實需要閉包再決定是否使用。還要特別注意無意中造成的閉包,這種閉包沒有實際實現閉包的優點,卻依然擁有其缺點。

看看這種常被新手誤用的的寫法:

閱讀全文:閉包(Closure)的細節(四):閉包效能與prototype

閉包(Closure)的細節(三):閉包與記憶體洩漏

閉包(Closure)的細節(三),閉包與記憶體洩漏:

所謂的記憶體洩漏指的是一些無法被釋放掉的記憶體。而這裡要討論的是早期IE的記憶體洩漏問題。雖然稱之為早期,但不得不承認早期IE的餘毒威力猶存,很多人依然在使用早期的IE,因此還是有了解的必要。

早期的IE很容易造成記憶體洩漏的情形,原因是因為IE對於DOM物件有自己的處理模式。當Javascript物件與DOM物件循環參考時,就會造成記憶體洩漏的問題。因為IE無法回收這樣的記憶體。下面是來自MDN的例子:

閱讀全文:閉包(Closure)的細節(三):閉包與記憶體洩漏

閉包(Closure)的細節(二):模擬私有變數

閉包(Closure)的細節(二),模擬私有變數:

Javascript身為一個物件導向的語言,卻很特別的沒有原生地宣告私有變數的方法。不過這個問題可以藉由閉包的特點來補足。閉包的特點之一就是閉包內的變數只能由閉包的函式來存取。這與私有變數的特性相同。

閱讀全文:閉包(Closure)的細節(二):模擬私有變數

閉包(Closure)的細節:共用與非共用變數

閉包(Closure)的細節,共用與非共用變數:

一般函式在執行完畢時,內部的區域變數會被釋放掉,但如果在執行時產生了閉包。那閉包會保留其所在巢狀函式內的變數。讓他不至於被系統釋放掉。現在有一個問題是,閉包保留下來的變數,會與其他閉包共用嗎?這其實取決於閉包產生的位置與時間點。

閱讀全文:閉包(Closure)的細節:共用與非共用變數

閉包(Closure)的基本概念

閉包(Closure)的基本概念:

閉包(Closure)算是在Javascript中比較高階的應用了,不過它基礎其實也不算太難懂。只是用起來很可以複雜XD。閉包其實也是函式,不過它比較特的的是它擁有一組特殊的環境變數--本來以為應該消失,可是卻依然存在的變數。在Mozilla的MDN中對閉包的解釋:

" A closure is a special kind of object that combines two things: a function, and the environment in which that function was created",閉包是個特殊的物件,他包含了一個函式,以及函式被建立時所在的環境。所謂的環境是:" 環境由任意的局域變數所組成,這些變數是由在閉包建立的時間點上存在於作用域裡的所有變數"。有些難懂,不過沒關係,繼續往下看看例子。

閱讀全文:閉包(Closure)的基本概念