code: function (obj) {
              // Must be an Object.
              // Because of IE, we also have to check the presence of the constructor property.
              // Make sure that Dom nodes and window objects don't pass through, as well
              if (!obj || util.type(obj) !== 'object' || obj.nodeType || /*jshint eqeqeq:false*/
                  // must == for ie8
                  obj.window == obj) {
                  return FALSE;
              }
              var key, objConstructor;
              try {
                  // Not own constructor property must be Object
                  if ((objConstructor = obj.constructor) && !hasOwnProperty(obj, 'constructor') && !hasOwnProperty(objConstructor.prototype, 'isPrototypeOf')) {
                      return FALSE;
                  }
              } catch (e) {
                  // IE8,9 Will throw exceptions on certain host objects
                  return FALSE;
              }    // Own properties are enumerated firstly, so to speed up,
                   // if last one is own, then all properties are own.
                   /*jshint noempty:false*/
              // Own properties are enumerated firstly, so to speed up,
              // if last one is own, then all properties are own.
              /*jshint noempty:false*/
              for (key in obj) {
              }
              return key === undef || hasOwnProperty(obj, key);
          }
docs: Checks to see if an object is a plain object (created using '{}'
  or 'new Object()' but not 'new FunctionClass()').
  @member KISSY