X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fcore.js;h=b82133635fb2d19f0a34eec81f7daeac4e8ae6d0;hb=7b26e3bcc8fab748cf99f4bf8d7e25599f8cd1f3;hp=793f122ac691ab7f0b250da08204b3705e381096;hpb=dee8e45ef35b4e97693a03c8199e7556823cf5c3;p=jquery.git diff --git a/src/core.js b/src/core.js index 793f122..b821336 100644 --- a/src/core.js +++ b/src/core.js @@ -32,7 +32,7 @@ var jQuery = function( selector, context ) { rtrim = /^\s+|\s+$/g, // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>$/, + rsingleTag = /<(\w+)\s*\/?>(?:<\/\1>)?$/, // Keep a UserAgent string for use with jQuery.browser userAgent = navigator.userAgent.toLowerCase(), @@ -272,19 +272,10 @@ jQuery.extend = jQuery.fn.extend = function() { continue; } - // Recurse if we're merging object values - if ( deep && copy && typeof copy === "object" && !copy.nodeType ) { - var clone; - - if ( src ) { - clone = src; - } else if ( jQuery.isArray(copy) ) { - clone = []; - } else if ( jQuery.isObjectLiteral(copy) ) { - clone = {}; - } else { - clone = copy; - } + // Recurse if we're merging object literal values + if ( deep && copy && jQuery.isObjectLiteral(copy) ) { + // Don't extend not object literals + var clone = src && jQuery.isObjectLiteral(src) ? src : {}; // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); @@ -328,13 +319,20 @@ jQuery.extend({ return false; } + // not own constructor property must be Object + if ( obj.constructor + && !hasOwnProperty.call(obj, "constructor") + && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + //own properties are iterated firstly, //so to speed up, we can test last one if it is own or not - + var key; for ( key in obj ) {} - return !key || hasOwnProperty.call( obj, key ); + return key === undefined || hasOwnProperty.call( obj, key ); }, isEmptyObject: function( obj ) { @@ -441,6 +439,10 @@ jQuery.extend({ }, inArray: function( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + for ( var i = 0, length = array.length; i < length; i++ ) { if ( array[ i ] === elem ) { return i;