2012-04-03 74 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