X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fcore.js;h=74b9fee3992ffa0eee504127684af3ae12bc764f;hb=190812c3be99bde536d373b6b6ab65cfe053a532;hp=ee4ac7051499a8ea7b81dd1fa362b0ee64196292;hpb=c5315f66870377579cb41a1c0d80389c02628a66;p=jquery.git diff --git a/src/core.js b/src/core.js index ee4ac70..74b9fee 100644 --- a/src/core.js +++ b/src/core.js @@ -122,16 +122,18 @@ jQuery.fn = jQuery.prototype = { return this.length; }, + toArray: Array.prototype.slice, + // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num == null ? // Return a 'clean' array - Array.prototype.slice.call( this ) : + this.toArray() : // Return just the object - this[ num ]; + ( num < 0 ? this.toArray.call(this, num)[0] : this[ num ] ); }, // Take an array of elements and push it onto the stack @@ -241,9 +243,15 @@ jQuery.extend = jQuery.fn.extend = function() { // Recurse if we're merging object values if ( deep && copy && typeof copy === "object" && !copy.nodeType ) { - target[ name ] = jQuery.extend( deep, - // Never move original objects, clone them - src || ( copy.length != null ? [ ] : { } ), copy ); + var clone; + + if( src ) clone = src; + else if( jQuery.isArray(copy) ) clone = [ ]; + else if( jQuery.isObject(copy) ) clone = { }; + else clone = copy; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { @@ -279,6 +287,16 @@ jQuery.extend({ return toString.call(obj) === "[object Array]"; }, + isObject: function( obj ) { + return this.constructor.call(obj) === Object; + }, + + isEmptyObject: function( obj ) { + var name = ""; + for(name in obj) break; + return !name; + }, + // check if an element is in a (or is an) XML document isXMLDoc: function( elem ) { return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || @@ -313,7 +331,7 @@ jQuery.extend({ // args is for internal usage only each: function( object, callback, args ) { - var name, i = 0, + var name, i = 0, length = object.length, isObj = length === undefined || jQuery.isFunction(object);