常見的編碼陷阱2

常見的編碼陷阱

3.for...Loops中使用hasOwnProperty()方法

JavaScript數組是沒有關聯的,可以把它當做哈希表,使用循環來遍歷對象屬性:

1         for(varpropinsomeObject){

2         alert(someObject[prop]);//alert'svalueofproperty

3         }

然而,存在的問題是for...in loop是在對象屬性鏈上遍歷每個枚舉類型的屬性,如果你只想

使用對象實際擁有的屬性,這可能有問題的。那怎麼解決呢?你可以使用hasOwnProperty()

方法。代碼如下:

4         for(varpropinsomeObject){

5         if(someObject.hasOwnProperty(prop)){

6         alert(someObject[prop]);//alert'svalueofproperty

7         }

8         }

4.比較布爾值

把布爾值作爲條件進行比較,其實這是在浪費電腦的計算時間。看下面這個例子吧:

9         if(foo==true){

10     //dosomethingfortrue

11     }else{

12     //dosomethingforfalse

13     }

其實foo==true這個比較完全是多餘的,因爲foo已經是布爾類型。直接這樣寫就行:

14     if(foo){

15     //dosomethingfortrue

16     }else{

17     //dosomethingforfalse

18     }

又或者這樣寫:

19     if(!foo){

20     //dosomethingiffooisfalse

21     }else{

22     //dosomethingiffooistrue

23     }

5.事件綁定

JavaScript中,事件是個複雜的問題。事件冒泡(event bubbling)和委託正在取代內聯事件(inline onclick)操作(一些特殊的初始頁除外)。

假設你有一個圖片網格,需要啓動一個modal lightbox窗口。千萬不要採取下面的做法,示例採用的是jQuery,如果你使用相似的庫或者其他,冒泡機制也同樣適合傳統的JavaScript

相關的HTML代碼:

24     <divid="grid-container">

25     <ahref="somep_w_picpath.jpg"><imgsrc="somep_w_picpath-thumb.jpg"></a>

26     <ahref="somep_w_picpath.jpg"><imgsrc="somep_w_picpath-thumb.jpg"></a>

27     <ahref="somep_w_picpath.jpg"><imgsrc="somep_w_picpath-thumb.jpg"></a>

28     ...

29     </div>

不好的JavaScript寫法:

30     $('a').on('click',function(){

31     callLightbox(this);

32     });

這段代碼假設調用lightbox,裏面傳遞一個anchor元素並且引用全屏圖片。與其綁定每個anchor元素還不如直接使用#grid-container元素。

33     $("#grid-container").on("click","a",function(event){

34     callLightbox(event.target);

35     });

在這段代碼中,thisevent.target都表示anchor元素。同樣你也可以在任何父元素上使用。只要保證所定義的元素是事件目標就行(event's target)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章