两者都会检测对象而不是基元。
这似乎是一种纯粹的语法差异。
// 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;
};
答案 0 :(得分:4)
我不太确定,因为它不应该。如果您正在考虑表现,那么这与您应该做的相反。
根据this JSPerf test available which compares the speed of creating via new Object()
, Object.create().new()
, and Object.prototype.constructor()
(与Object.constructor()
相同);到目前为止Object.constructor()
是最慢的一个。
谷歌的V8引擎使用new Object()
的速度要快得多,因为它会大大优化通话,所以我真的不担心它。
答案 1 :(得分:1)
这是误报。使用Object
,它更简洁,更清晰,更快。
“JSLint does not expect to see new Object
.” - 你should use an object literal instead是可以理解的。但是,错误地发出了相同的警告even if Object
is called as a function。这可能是为了检测Object()
创建,但使用参数调用Object
没有任何问题。