Javascript 哪个更快:foo.constructor===constructor还是foo.constructor.name===";建造商;?

Javascript 哪个更快:foo.constructor===constructor还是foo.constructor.name===";建造商;?,javascript,performance,node.js,constructor,Javascript,Performance,Node.js,Constructor,我不知道哪个更快:foo.constructor===constructor或foo.constructor.name===“constructor”(foo不是null或未定义的) 让我们举一个例子: var obj = {}; if (obj.constructor === Object) { /* do something */ } if (obj.constructor.name === "Object") { /* do something */ } 哪个更快

我不知道哪个更快:
foo.constructor===constructor
foo.constructor.name===“constructor”
foo
不是
null
未定义的

让我们举一个例子:

var obj = {};

if (obj.constructor === Object) {
     /* do something */
}

if (obj.constructor.name === "Object") {
     /* do something */
}
哪个更快

我更喜欢使用
obj.constructor===Object
,只是因为它比较短,但是有什么理由我必须使用
obj.constructor.name===“Object”
?它比obj.constructor===Object快吗?

显然(链接到jsperf),至少在Chrome31中是这样。(下次遇到类似这样的性能问题时,JSPerf会非常有帮助。)

这似乎是对的,因为您不必在第一个字符串中创建字符串,而且比较字符串自然比比较对象慢


然而,这实际上是微观优化。用户真的会注意到差异吗?(否)使用您认为更具可读性的任何东西。

只需运行一个循环来测试它的速度,该循环执行相同的操作几次。我这样做是为了你,下面是我的结果:
var obj={};控制台时间(“测试1”);对于(var i=0;i Test1:171.000 0MS*/控制台)时间(“Test2”);(var i=0;i ^ ^我会把它作为回答,但它被搁置了。作为一个正确格式的答案,它会更清楚一些。有趣的事实:这两个不是等价的。考虑<代码> var Obj=新(函数对象()){})第一:比较字符串总是比比较引用、布尔值或数字慢得多