閉包(Closure)的細節(四):閉包效能與prototype
- 詳細內容
- 分類:Javascript
- 發佈:2013-07-09, 週二 10:59
- 點擊數:2203
閉包(Closure)的細節(三),閉包效能與prototype:
使用閉包時得注意,因為閉包有效能上的影響,主要是反映在處理速度與記憶體的占用。因此確定目的是否確實需要閉包再決定是否使用。還要特別注意無意中造成的閉包,這種閉包沒有實際實現閉包的優點,卻依然擁有其缺點。
看看這種常被新手誤用的的寫法:
<script type="text/javascript"> function MyPlayer(name,race,sex) { this.name = name.toString(); this.race = race.toString(); this.sex = sex.toString(); this.getName = function() { return this.name; }; this.getRace = function() { return this.race; }; this.getSex = function() { return this.sex; }; } </script>
這種寫法並不好,這讓他每次產生新的物件時,其物件方法都會被賦值一次。物件通用的方法,應該要被寫在prototype中。如下:
<script type="text/javascript"> function MyPlayer(name,race,sex) { this.name = name.toString(); this.race = race.toString(); this.sex = sex.toString(); } MyPlayer.prototype.getName = function() { return this.name; }; MyPlayer.prototype.getRace = function() { return this.race; }; MyPlayer.prototype.getSex = function() { return this.sex; }; </script>
利用原型可以讓物件共享方法,這比上面有效率的多。
這範例說明了prototype與閉包的使用時機,不過嚴格來說上面兩種做法都有點不切實際,因為其實變數本身就是公開屬性了,在為其增加公開方法其實沒必要。比較常的做法是用閉包來模擬並且存取私有變數。用prototype來實作通用方法以及存取通用的私有變數。
按個讚!~支持本站!~
FB推薦載入中