diff --git a/lib/util.js b/lib/util.js index 86f585f95217e4..090543a535c18b 100644 --- a/lib/util.js +++ b/lib/util.js @@ -543,7 +543,8 @@ function isRegExp(re) { exports.isRegExp = isRegExp; function isObject(arg) { - return arg !== null && typeof arg === 'object'; + var type = typeof arg; + return type === 'function' || type === 'object' && arg !== null; } exports.isObject = isObject; diff --git a/test/parallel/test-util.js b/test/parallel/test-util.js index 2fb4bc5609bcd6..e3e33c96598152 100644 --- a/test/parallel/test-util.js +++ b/test/parallel/test-util.js @@ -50,6 +50,14 @@ assert.equal(true, util.isError(Object.create(Error.prototype))); // isObject assert.ok(util.isObject({}) === true); +assert.ok(util.isObject(function() {}) === true); +assert.ok(util.isObject([1, 2, 3]) === true); +assert.ok(util.isObject(new String('string')) === true); +assert.ok(util.isObject(null) === false); +assert.ok(util.isObject(undefined) === false); +assert.ok(util.isObject('string') === false); +assert.ok(util.isObject(42) === false); +assert.ok(util.isObject(true) === false); // isPrimitive assert.equal(false, util.isPrimitive({}));