Rewrote .merge() (faster and less obtuse now). Fixed #5610.
This commit is contained in:
parent
f25eedf32a
commit
715d1c5a30
2 changed files with 16 additions and 15 deletions
25
src/core.js
25
src/core.js
|
@ -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() {
|
||||||
});
|
});
|
||||||
|
|
||||||
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(){
|
||||||
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(){
|
||||||
|
|
Loading…
Reference in a new issue