2013-05-09 48 views
0

我讀的jQuery的源代碼。在jQuery.merge爲什麼jQuery.merge設置手動返回值的長度?

的功能
merge: function(first, second) { 
    var i = first.length, 
     j = 0; 

    if (typeof second.length === "number") { 
     for (var l = second.length; j < l; j++) { 
      first[ i++ ] = second[ j ]; 
     } 

    } else { 
     while (second[j] !== undefined) { 
      first[ i++ ] = second[ j++ ]; 
     } 
    } 

    first.length = i; 

    return first; 
} 

有兩件事情我不明白:

  1. 爲什麼檢查second.length的類型,但不檢查first.length的類型?
  2. 由於Array的長度自動增加,爲什麼我們需要手動設置長度?

謝謝。

回答

0

JavaScript沒有,也不支持關聯數組。然而...... Javascript中的所有數組都是對象,Javascript的對象語法給出了關聯數組的基本模擬。

所以,如果你要運行:

x = []; 
x['a'] = 1; 
x['b'] = 2; 
alert(x.length); //alerts 0; 

因此他們的長度,使我們能夠得到的長度,我們期待

+0

我試圖合併數組的關聯數組,但結果長度等於Array的長度。此外,我不認爲Merge可以處理關聯數組,因爲還有另一個函數「extend」被設計用來完成這項工作。 – liuyl 2013-05-09 06:43:30

相關問題