Added comments to isObject.
authorrkatic <robert.katic@gmail.com>
Sun, 8 Nov 2009 23:26:01 +0000 (07:26 +0800)
committerJohn Resig <jeresig@gmail.com>
Mon, 9 Nov 2009 11:32:24 +0000 (19:32 +0800)
src/core.js

index ff31e81..6eeb9a6 100644 (file)
@@ -39,6 +39,7 @@ var jQuery = function( selector, context ) {
 
        // Save a reference to some core methods
        toString = Object.prototype.toString,
+       hasOwnProperty = Object.prototype.hasOwnProperty,
        push = Array.prototype.push,
        slice = Array.prototype.slice,
        indexOf = Array.prototype.indexOf;
@@ -323,7 +324,17 @@ jQuery.extend({
        },
 
        isObject: function( obj ) {
-               return this.constructor.call(obj) === Object;
+               if ( toString.call(obj) !== "[object Object]" ) {
+                       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 );
        },
 
        isEmptyObject: function( obj ) {