哪个更快:foo.constructor ===构造函数或foo.constructor.name ===“构造函数”?

时间:2014-01-05 18:57:44

标签: javascript performance node.js constructor

我从来不知道哪个更快:foo.constructor === Constructorfoo.constructor.name === "Constructor"foo不是nullundefined)?

我们举一个例子:

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快吗?

1 个答案:

答案 0 :(得分:2)

显然the first one is faster(链接到jsperf),至少在Chrome 31中。(下次遇到类似这样的性能问题时,JSPerf会非常有帮助。)

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

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