查找JS對象中是否包含某個變量的6種方法總結(jié)
在JavaScript中,檢查一個對象是否包含某個屬性(變量)可以通過幾種不同的方法實現(xiàn)。下面是一些常用的方法:
方法一:使用 in 運算符
in
運算符可以用來檢測一個對象是否具有指定的屬性名(無論該屬性是直接定義在對象上還是繼承來的)。
const obj = { a: 1, b: 2 }; console.log('a' in obj); // true console.log('c' in obj); // false
方法二:使用 hasOwnProperty() 方法
hasOwnProperty()
方法用來檢測一個對象是否直接具有指定的屬性名,不考慮繼承鏈上的屬性。
const obj = { a: 1, b: 2 }; console.log(obj.hasOwnProperty('a')); // true console.log(obj.hasOwnProperty('c')); // false
方法三:使用 Object.prototype.hasOwnProperty.call()
當(dāng)需要檢查一個繼承來的屬性是否存在時,或者當(dāng) this
上下文不正確時,可以使用 call()
或 apply()
方法來調(diào)用 hasOwnProperty
。
const obj = Object.create({ c: 3 }); obj.a = 1; obj.b = 2; console.log(Object.prototype.hasOwnProperty.call(obj, 'a')); // true console.log(Object.prototype.hasOwnProperty.call(obj, 'c')); // false
方法四:使用 Reflect.has()
Reflect.has()
方法類似于 in
運算符,但它返回一個布爾值指示對象是否有給定的屬性鍵。
const obj = { a: 1, b: 2 }; console.log(Reflect.has(obj, 'a')); // true console.log(Reflect.has(obj, 'c')); // false
方法五:使用 Object.keys() 或 Object.getOwnPropertyNames()
如果你只需要檢查一個或幾個屬性,并且不關(guān)心性能,你可以使用 Object.keys()
或 Object.getOwnPropertyNames()
來獲取所有屬性名,然后檢查這些數(shù)組中是否包含你想要的屬性名。
const obj = { a: 1, b: 2 }; const keys = Object.keys(obj); console.log(keys.includes('a')); // true console.log(keys.includes('c')); // false const ownKeys = Object.getOwnPropertyNames(obj); console.log(ownKeys.includes('a')); // true console.log(ownKeys.includes('c')); // false
方法六:使用 Object.getOwnPropertyDescriptor()
如果需要檢查一個屬性是否存在并且獲取它的描述符,可以使用 Object.getOwnPropertyDescriptor()
。
const obj = { a: 1, b: 2 }; const desc = Object.getOwnPropertyDescriptor(obj, 'a'); console.log(desc !== undefined); // true const desc2 = Object.getOwnPropertyDescriptor(obj, 'c'); console.log(desc2 === undefined); // true
總結(jié)
- 使用
in
運算符和Reflect.has()
可以檢測繼承來的屬性。 - 使用
hasOwnProperty()
和Object.getOwnPropertyDescriptor()
只能檢測對象自身的屬性。 - 使用
Object.keys()
和Object.getOwnPropertyNames()
可以獲得所有屬性的列表,然后進行進一步的檢查。
根據(jù)你的具體需求選擇合適的方法。
到此這篇關(guān)于查找JS對象中是否包含某個變量的6種方法總結(jié)的文章就介紹到這了,更多相關(guān)查找JS對象包含某變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript知識點總結(jié)(十一)之js中的Object類詳解
這篇文章主要介紹了JavaScript知識點總結(jié)(十一)之js中的Object類詳解的相關(guān)資料,需要的朋友可以參考下2016-05-05JS旋轉(zhuǎn)實現(xiàn)轉(zhuǎn)盤抽獎效果
這篇文章主要為大家詳細(xì)介紹了JS旋轉(zhuǎn)實現(xiàn)轉(zhuǎn)盤抽獎效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02JavaScript手寫源碼之omit函數(shù)的實現(xiàn)
最近突然有個新的想法,想去看看前端的小庫來提升自己的編碼能力。但是又不知道怎么去證明自己是否真的看懂了,那就實現(xiàn)一個omit函數(shù)吧2023-02-02Bootstrap Table服務(wù)器分頁與在線編輯應(yīng)用總結(jié)
這篇文章主要介紹了Bootstrap Table服務(wù)器分頁與在線編輯應(yīng)用總結(jié) 的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08