Both will detect objects and not primitives.
It seems like a purely syntactical difference.
// jslint prefers {}.constructor(obj) over Object(obj)
// called isObject by underscore
// will test only for objects that have writable keys
// for example string literals will not be detected
// but arrays will
var isWritable = function (obj) {
return {}.constructor(obj) === obj;
};