js判斷對象是否擁有某個key的兩種方法對比
一、兩種判斷方法
方法一 :"key" in obj
,結(jié)果為 false,表示不包含;否則表示包含
方法二 :obj.hasOwnProperty("key")
,obj 表示對象,結(jié)果為 false 表示不包含;否則表示包含
二、兩種方法的區(qū)別
這兩種方法都可以用于檢查對象是否包含指定的屬性,但它們有一些區(qū)別。
“key” in obj:
- 這種方法使用
in
運(yùn)算符來檢查屬性是否存在于對象中。 - 如果對象
obj
或其原型鏈中包含名為 “key” 的屬性,則返回true
。 - 如果對象
obj
不包含名為 “key” 的屬性,并且它的原型鏈上也不存在該屬性,則返回false
。
- 這種方法使用
obj.hasOwnProperty(“key”):
- 這種方法使用
hasOwnProperty
方法來檢查對象是否直接擁有指定的屬性。 - 如果對象
obj
直接擁有名為 “key” 的屬性,則返回true
。 - 如果對象
obj
不直接擁有名為 “key” 的屬性,或者它的原型鏈上存在該屬性,則返回false
。
- 這種方法使用
區(qū)別如下:
"key" in obj
檢查的是屬性是否存在于對象obj
或其原型鏈中,而不僅僅是對象本身。obj.hasOwnProperty("key")
檢查的是屬性是否直接存在于對象obj
中,不包括其原型鏈。
三、舉個例子來說明:
var obj = { key: "value" }; console.log("key" in obj); // 輸出: true console.log(obj.hasOwnProperty("key")); // 輸出: true console.log("toString" in obj); // 輸出: true (toString是Object的原型方法) console.log(obj.hasOwnProperty("toString"));// 輸出: false
在這個例子中,obj
對象直接擁有名為 “key” 的屬性,因此兩種方法都返回 true
。同時,由于 toString
方法存在于 Object
的原型中,因此使用 in
運(yùn)算符檢查 "toString" in obj
會返回 true
,但 obj.hasOwnProperty("toString")
返回 false
,因為該屬性不是直接屬于 obj
對象的。
因此,選擇使用哪種方法取決于你對屬性存在性的具體需求,是希望檢查對象及其原型鏈上的屬性,還是僅僅檢查對象自身的屬性。
附:js判斷數(shù)組或?qū)ο笾械膋ey是否存在
JS中數(shù)組和對象是等同的,判斷一個key是否存在于數(shù)組中(或?qū)ο笫欠癜硞€屬性),我們可能馬上想到的是使用ary[key] == undefined來判斷key是否存在這個數(shù)組或者是對象中,但是這樣判斷是有問題的,因為可能存在ary = {key:undefined};
正確的方法應(yīng)該為:
ary.hasOwnProperty(key); 或 obj.hasOwnProperty(key);
另外數(shù)組或?qū)ο筮M(jìn)行循環(huán)的時候應(yīng)該使用:
for(var key in ary) { console.log(key+" : "+ary[key]); }
總結(jié)
到此這篇關(guān)于js判斷對象是否擁有某個key的兩種方法對比的文章就介紹到這了,更多相關(guān)js判斷對象有某個key內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中立即執(zhí)行函數(shù)實例詳解
javascript和其他編程語言相比比較隨意,所以javascript代碼中充滿各種奇葩的寫法,有時霧里看花,當(dāng)然,能理解各型各色的寫法也是對javascript語言特性更進(jìn)一步的深入理解。這篇文章主要給大家介紹了關(guān)于JavaScript中立即執(zhí)行函數(shù)的相關(guān)資料,需要的朋友可以參考下。2017-11-11Javascript實現(xiàn)的Map集合工具類完整實例
這篇文章主要介紹了Javascript實現(xiàn)的Map集合工具類,以完整實例形式分析了javascript實現(xiàn)map集合的構(gòu)造、查找、刪除、判斷等相關(guān)技巧,需要的朋友可以參考下2015-07-07js獲取當(dāng)前頁的URL與window.location.href簡單方法
下面小編就為大家?guī)硪黄猨s獲取當(dāng)前頁的URL與window.location.href簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02詳解PHP中pathinfo()函數(shù)導(dǎo)致的安全問題
這篇文章主要給大家介紹了PHP中pathinfo()函數(shù)導(dǎo)致的安全問題,文中給出了詳細(xì)的介紹與示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下,下面來一起看看吧。2017-01-01