我从来不知道哪个更快:foo.constructor === Constructor
或foo.constructor.name === "Constructor"
(foo
不是null
或undefined
)?
我们举一个例子:
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
快吗?
答案 0 :(得分:2)
显然the first one is faster(链接到jsperf),至少在Chrome 31中。(下次遇到类似这样的性能问题时,JSPerf会非常有帮助。)
这似乎是正确的,因为您不必在第一个字符串中创建字符串,并且比较字符串自然要慢于比较对象。
然而,这实际上是微优化。用户真的会注意到差异吗? (不)使用您认为更具可读性的任何内容。