2012-04-03 72 views
2

我想通过将它们推入某些集合来关注“哪些对象已被处理”。
由于没有类型设置在JavaScript中,我会使用对象,就像在Mimicking sets in JavaScript?
陈述因此问题是:做到这一点字典检查依赖的对象的大写金额已经被推到我的Set对象?是O(N)还是O(1)?对象的速度[属性]

+0

jsperf.com将会找到这个地方 – tkone 2012-04-03 11:25:46

+0

你可以[创建一个jsPerf测试用例](http://jsperf.com/)来测量浏览器和设备之间的速度差异。 – 2012-04-03 11:25:50

回答

1

回答因JS引擎而异,当然。关于V8,检查速度取决于对象的数量(==“设置”对象属性计数),但它仍然是O(1)。否则,没有相当多的Web应用程序可以快速运行。

关于您引用的SO问题,请勿使用if ("foo" in A)检查元素的存在,如果可能的话 - 这将遍历整个原型链,因此您将获得性能影响,并且很可能找到许多不应该在那里(如toString)。尽可能使用A.hasOwnProperty("foo")

+2

关于你引用的SO问题,如果可能的话,不要使用'if(“foo”in A)'来检查元素的存在 - 这将遍历整个原型链,所以你会得到一个性能影响,最有可能找到很多不应该存在的对象(比如'toString')。尽可能使用'A.hasOwnProperty(“foo”)'。 – 2012-04-03 11:27:08

+0

您可以将您的评论推荐给答案)看起来人们觉得它比第一部分更有用。 – Nakilon 2012-04-03 11:31:33

+0

@Nakilon:完成,谢谢 – 2012-04-03 12:39:21