mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
jquery core: extend() now supports deep + extending jquery itself
cached some vars and it proved to be faster.
This commit is contained in:
parent
17b1e407d1
commit
cd455eeba7
16
src/core.js
16
src/core.js
@ -566,9 +566,9 @@ jQuery.extend = jQuery.fn.extend = function() {
|
||||
target = {};
|
||||
|
||||
// extend jQuery itself if only one argument is passed
|
||||
if ( length == 1 ) {
|
||||
if ( length == i ) {
|
||||
target = this;
|
||||
i = 0;
|
||||
--i;
|
||||
}
|
||||
|
||||
for ( ; i < length; i++ )
|
||||
@ -576,17 +576,19 @@ jQuery.extend = jQuery.fn.extend = function() {
|
||||
if ( (options = arguments[ i ]) != null )
|
||||
// Extend the base object
|
||||
for ( var name in options ) {
|
||||
var src = target[ name ], copy = options[ name ];
|
||||
|
||||
// Prevent never-ending loop
|
||||
if ( target === options[ name ] )
|
||||
if ( target === copy )
|
||||
continue;
|
||||
|
||||
// Recurse if we're merging object values
|
||||
if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
|
||||
target[ name ] = jQuery.extend( deep, target[ name ], options[ name ] );
|
||||
if ( deep && copy && typeof copy == "object" && src && !copy.nodeType )
|
||||
target[ name ] = jQuery.extend( deep, src, copy );
|
||||
|
||||
// Don't bring in undefined values
|
||||
else if ( options[ name ] != undefined )
|
||||
target[ name ] = options[ name ];
|
||||
else if ( copy != undefined )
|
||||
target[ name ] = copy;
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user