For simply checking against `Object` or `Array` without additional function call (speed). As also posted [here][1].

**`isArray()`**

    isArray = function(a) {
        return (!!a) && (a.constructor === Array);
    };
    console.log(isArray(        )); // false
    console.log(isArray(    null)); // false
    console.log(isArray(    true)); // false
    console.log(isArray(       1)); // false
    console.log(isArray(   'str')); // false
    console.log(isArray(      {})); // false
    console.log(isArray(new Date)); // false
    console.log(isArray(      [])); // true

**`isLiteralObject()`** - Note: use for `Object` literals only, as it returns `false` for custom objects, like `new Date` or `new YourCustomObject`.

    isLiteralObject = function(a) {
        return (!!a) && (a.constructor === Object);
    };
    console.log(isLiteralObject(        )); // false
    console.log(isLiteralObject(    null)); // false
    console.log(isLiteralObject(    true)); // false
    console.log(isLiteralObject(       1)); // false
    console.log(isLiteralObject(   'str')); // false
    console.log(isLiteralObject(      [])); // false
    console.log(isLiteralObject(new Date)); // false
    console.log(isLiteralObject(      {})); // true


  [1]: https://stackoverflow.com/a/16608045/926988