一、兩種判斷方法
方法一 :"key" in obj
,結(jié)果為 false,表示不包含;否則表示包含
方法二 :obj.hasOwnProperty("key")
,obj 表示對(duì)象,結(jié)果為 false 表示不包含;否則表示包含
二、兩種方法的區(qū)別
這兩種方法都可以用于檢查對(duì)象是否包含指定的屬性,但它們有一些區(qū)別。
-
“key” in obj:
- 這種方法使用
in
運(yùn)算符來(lái)檢查屬性是否存在于對(duì)象中。 - 如果對(duì)象
obj
或其原型鏈中包含名為 “key” 的屬性,則返回true
。 - 如果對(duì)象
obj
不包含名為 “key” 的屬性,并且它的原型鏈上也不存在該屬性,則返回false
。
- 這種方法使用
-
obj.hasOwnProperty(“key”):
- 這種方法使用
hasOwnProperty
方法來(lái)檢查對(duì)象是否直接擁有指定的屬性。 - 如果對(duì)象
obj
直接擁有名為 “key” 的屬性,則返回true
。 - 如果對(duì)象
obj
不直接擁有名為 “key” 的屬性,或者它的原型鏈上存在該屬性,則返回false
。
- 這種方法使用
區(qū)別如下:
-
"key" in obj
檢查的是屬性是否存在于對(duì)象obj
或其原型鏈中,而不僅僅是對(duì)象本身。 -
obj.hasOwnProperty("key")
檢查的是屬性是否直接存在于對(duì)象obj
中,不包括其原型鏈。
三、舉個(gè)例子來(lái)說(shuō)明:
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
在這個(gè)例子中,obj
對(duì)象直接擁有名為 “key” 的屬性,因此兩種方法都返回 true
。同時(shí),由于 toString
方法存在于 Object
的原型中,因此使用 in
運(yùn)算符檢查 "toString" in obj
會(huì)返回 true
,但 obj.hasOwnProperty("toString")
返回 false
,因?yàn)樵搶傩圆皇侵苯訉儆?obj
對(duì)象的。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-716486.html
因此,選擇使用哪種方法取決于你對(duì)屬性存在性的具體需求,是希望檢查對(duì)象及其原型鏈上的屬性,還是僅僅檢查對(duì)象自身的屬性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-716486.html
到了這里,關(guān)于js判斷對(duì)象是否擁有某個(gè)key的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!