bench/lib/benchmark.js
function isObject(value) {
    var ctor,
        result = !!value && toString.call(value) == '[object Object]';

    if (result && noArgumentsClass) {
      // avoid false positives for `arguments` objects in IE < 9
      result = !isArguments(value);
    }
    if (result) {
      // IE < 9 presents nodes like `Object` objects:
      // IE < 8 are missing the node's constructor property
      // IE 8 node constructors are typeof "object"
      ctor = value.constructor;
      // check if the constructor is `Object` as `Object instanceof Object` is `true`
      if ((result = isClassOf(ctor, 'Function') && ctor instanceof ctor)) {
        // An object's own properties are iterated before inherited properties.
        // If the last iterated key belongs to an object's own property then
        // there are no inherited enumerable properties.
        forProps(value, function(subValue, subKey) { result = subKey; });
        result = result === true || hasKey(value, result);
      }
    }
    return result;
  }
function isObject(value) {
    var ctor,
        result = !!value && toString.call(value) == '[object Object]';

    if (result && noArgumentsClass) {
      // avoid false positives for `arguments` objects in IE < 9
      result = !isArguments(value);
    }
    if (result) {
      // IE < 9 presents nodes like `Object` objects:
      // IE < 8 are missing the node's constructor property
      // IE 8 node constructors are typeof "object"
      ctor = value.constructor;
      // check if the constructor is `Object` as `Object instanceof Object` is `true`
      if ((result = isClassOf(ctor, 'Function') && ctor instanceof ctor)) {
        // An object's own properties are iterated before inherited properties.
        // If the last iterated key belongs to an object's own property then
        // there are no inherited enumerable properties.
        forProps(value, function(subValue, subKey) { result = subKey; });
        result = result === true || hasKey(value, result);
      }
    }
    return result;
  }
function isObject ( value ) { var ctor , result = ! ! value && toString . call ( value ) == '[object Object]' ; if ( result && noArgumentsClass ) { // avoid false positives for `arguments` objects in IE < 9 result = ! isArguments ( value ) ; } if ( result ) { // IE < 9 presents nodes like `Object` objects: // IE < 8 are missing the node's constructor property // IE 8 node constructors are typeof "object" ctor = value . constructor ; // check if the constructor is `Object` as `Object instanceof Object` is `true` if ( ( result = isClassOf ( ctor , 'Function' ) && ctor instanceof ctor ) ) { // An object's own properties are iterated before inherited properties. // If the last iterated key belongs to an object's own property then // there are no inherited enumerable properties. forProps ( value , function ( subValue , subKey ) { result = subKey ; } ) ; result = result === true || hasKey ( value , result ) ; } } return result ; }
Checks if the specified `value` is an object created by the `Object`
constructor assuming objects created by the `Object` constructor have no
inherited enumerable properties and assuming there are no `Object.prototype`
extensions.

@private
@param {Mixed} value The value to check.
@returns {Boolean} Returns `true` if `value` is an object, else `false`.
Checks if the specified value is an object created by the Object constructor assuming objects created by the Object constructor have no inherited enumerable properties and assuming there are no Object . prototype extensions .