+ isObjectLiteral: function( obj ) {
+ 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 );