Commit 715d1c5a authored by John Resig's avatar John Resig

Rewrote .merge() (faster and less obtuse now). Fixed #5610.

parent f25eedf3
...@@ -567,23 +567,20 @@ jQuery.extend({ ...@@ -567,23 +567,20 @@ jQuery.extend({
}, },
merge: function( first, second ) { merge: function( first, second ) {
var pos, i = second.length; var i = first.length, j = 0;
// We have to get length this way when IE & Opera overwrite the length if ( typeof second.length === "number" ) {
// expando of getElementsByTagName for ( var l = second.length; j < l; j++ ) {
if ( i && i.nodeType ) { first[ i++ ] = second[ j ];
for ( i = 0; second[i]; ++i ) {} }
} } else {
while ( second[j] !== undefined ) {
pos = i + first.length; first[ i++ ] = second[ j++ ];
}
// Correct length for non Arrays
first.length = pos;
while ( i ) {
first[ --pos ] = second[ --i ];
} }
first.length = i;
return first; return first;
}, },
......
...@@ -711,7 +711,7 @@ test("jQuery.each(Object,Function)", function() { ...@@ -711,7 +711,7 @@ test("jQuery.each(Object,Function)", function() {
}); });
test("jQuery.makeArray", function(){ test("jQuery.makeArray", function(){
expect(15); expect(17);
equals( jQuery.makeArray(jQuery('html>*'))[0].nodeName.toUpperCase(), "HEAD", "Pass makeArray a jQuery object" ); equals( jQuery.makeArray(jQuery('html>*'))[0].nodeName.toUpperCase(), "HEAD", "Pass makeArray a jQuery object" );
...@@ -744,6 +744,10 @@ test("jQuery.makeArray", function(){ ...@@ -744,6 +744,10 @@ test("jQuery.makeArray", function(){
equals( jQuery.makeArray(/a/)[0].constructor, RegExp, "Pass makeArray a regex" ); equals( jQuery.makeArray(/a/)[0].constructor, RegExp, "Pass makeArray a regex" );
ok( jQuery.makeArray(document.getElementById('form')).length >= 13, "Pass makeArray a form (treat as elements)" ); ok( jQuery.makeArray(document.getElementById('form')).length >= 13, "Pass makeArray a form (treat as elements)" );
// For #5610
same( jQuery.makeArray({'length': '0'}), [], "Make sure object is coerced properly.");
same( jQuery.makeArray({'length': '5'}), [], "Make sure object is coerced properly.");
}); });
test("jQuery.isEmptyObject", function(){ test("jQuery.isEmptyObject", function(){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment