欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js判斷對象是否擁有某個(gè)key的兩種方法對比

 更新時(shí)間:2023年12月13日 11:03:00   作者:YumOS  
JS中數(shù)組和對象是等同的,我們經(jīng)常遇到需要判斷一個(gè)key是否存在于對象中的情況,這篇文章主要給大家介紹了關(guān)于如何利用js判斷對象是否擁有某個(gè)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 中,不包括其原型鏈。

三、舉個(gè)例子來說明:

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 對象直接擁有名為 “key” 的屬性,因此兩種方法都返回 true。同時(shí),由于 toString 方法存在于 Object 的原型中,因此使用 in 運(yùn)算符檢查 "toString" in obj 會(huì)返回 true,但 obj.hasOwnProperty("toString") 返回 false,因?yàn)樵搶傩圆皇侵苯訉儆?nbsp;obj 對象的。

因此,選擇使用哪種方法取決于你對屬性存在性的具體需求,是希望檢查對象及其原型鏈上的屬性,還是僅僅檢查對象自身的屬性。

附:js判斷數(shù)組或?qū)ο笾械膋ey是否存在

JS中數(shù)組和對象是等同的,判斷一個(gè)key是否存在于數(shù)組中(或?qū)ο笫欠癜硞€(gè)屬性),我們可能馬上想到的是使用ary[key] == undefined來判斷key是否存在這個(gè)數(shù)組或者是對象中,但是這樣判斷是有問題的,因?yàn)榭赡艽嬖?code data-highlighted="yes">ary = {key:undefined};

正確的方法應(yīng)該為:

ary.hasOwnProperty(key); 或 obj.hasOwnProperty(key);

另外數(shù)組或?qū)ο筮M(jìn)行循環(huán)的時(shí)候應(yīng)該使用:

for(var key in ary) { console.log(key+" : "+ary[key]); }

總結(jié)

到此這篇關(guān)于js判斷對象是否擁有某個(gè)key的兩種方法對比的文章就介紹到這了,更多相關(guān)js判斷對象有某個(gè)key內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論