Made isObjectLiteral to work correctly with custom objects with empty prototypes.

This commit is contained in:
Robert Katic 2009-11-12 12:50:40 +08:00 committed by John Resig
parent 1ce92e022d
commit 990d9ca1b0
2 changed files with 14 additions and 3 deletions

View file

@ -328,13 +328,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 ) {