[英]How {}.hasOwnProperty() works?
假設我有一個對象var a = {"1": 1, "2": 2}
和一個數組var b = [1, 2]
以下兩者之間有什么區別?
a.hasOwnProperty('1'); // Returns true
b.indexOf(1); // Returns 0, which is the index
在調用這兩種方法時, for
循環會起作用嗎? 兩者的復雜性是否明智?
謝謝你的解釋...
下面兩個有什么區別
第一個告訴您對象是否具有名稱為 "1"
的屬性。 第二個告訴您數組是否具有值為 1的條目 ,如果是,則說明其在數組中的位置。 那是完全不同的事情。 請注意, hasOwnProperty
根本不查看該屬性的值 ,而只是查看它是否存在。 從({"1": "foo", "2": "bar"}).hasOwnProperty("1")
獲得相同的結果( true
({"1": "foo", "2": "bar"}).hasOwnProperty("1")
。
我的問題是,在調用這兩種方法時,
for
循環會發揮作用嗎?
不在任何現代JavaScript引擎上的hasOwnProperty
。 是,在indexOf
。
和復雜度都相等?
一點都不。 indexOf
將是線性的( O(n)
)。 hasOwnProperty
將小於該值,通常大大小於該值。 即使在最壞的情況下(未優化的對象),也將更多地遵循哈希字典查找。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.