Just surprised how many upvotes for wrong answers 😮
<br> Only [1 answer](https://stackoverflow.com/a/16608074/3612353) passed my tests!!! Here I've created my simplified version:

    function isObject(o) {
      return o instanceof Object && o.constructor === Object;
    }

As for me, it's clear and simple, and just works! Here my tests:

    console.log(isObject({}));   // Will return: true
    console.log(isObject([]));   // Will return: false
    console.log(isObject(null)); // Will return: false
    console.log(isObject(/.*/)); // Will return: false

ONE MORE TIME: not all answers pass this tests !!! 🙈

In case you need to verify that object is **instance of particular class** you have to check constructor with your particular class, like:

    function isDate(o) {
      return o instanceof Object && o.constructor === Date;
    }

simple test:

    var d = new Date();
    console.log(isObject(d)); // Will return: false
    console.log(isDate(d));   // Will return: true