我有一種情況,我試圖使array
工作,但我不認爲它會。我想擁有一個對象列表,每個對象都有一個唯一的ID,並且我希望能夠輕鬆引用特定對象,而無需遍歷搜索該ID的數組。JavaScript中的「for ... in」循環總是不好?
如果我使用object
我可以很容易地使用唯一的ID作爲鍵和對象作爲值。但是,如果我使用對象而不是陣列,則必須使用for...in
循環,並且我知道如果有人使用我的代碼擴展了Object.prototype
,則會出現問題。
因此,這裏是我的問題:
難道真的那麼普遍,人們延長Object.prototype
,我應該感到厭倦使用它呢?還有其他原因爲什麼我不想使用for...in
循環?
另一方面,循環訪問一個數組尋找一個唯一的ID的性能打擊是如此之小以至於我不必擔心? (爲了記錄,數組可能只有很少的元素,但我會經常訪問它,而且我寫的代碼將是一個jQuery插件,所以我無法控制什麼其他惡意代碼的人將其與合併)
更新:
基於從@nnnnnn的意見,我成立了一個jsperf測試和這裏的結果: http://jsperf.com/accessing-object-properties-vs-iterating-over-arrays
基本上,儘管對象方式稍微快一些,但不同ce可以忽略不計。仍然,使用for...in
與hasOwnProperty
似乎更清潔。
號他們只是一般的「壞」當一個人使用過結構的*陣列*,與預期一對,每一個在其他語言。 (答案涵蓋其餘部分。) – 2011-12-28 03:18:41