JavaScript如何判斷一個對象是空對象(附5種常見方法)
一、 使用 Object.keys() 方法
1、描述
Object.keys() 方法會返回一個對象自身的所有可枚舉屬性的數(shù)組。如果該數(shù)組的長度為 0,則表示該對象是空的。
2、示例
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
console.log(isEmpty({})); // true
console.log(isEmpty({a: 1})); // false二、 使用 Object.getOwnPropertyNames() 方法
1、描述
Object.getOwnPropertyNames() 方法返回一個對象自身的所有屬性(包括不可枚舉屬性,但不包括繼承的屬性)。如果該數(shù)組的長度為 0,則表示該對象是空的。
2、示例
function isEmpty(obj) {
return Object.getOwnPropertyNames(obj).length === 0;
}
console.log(isEmpty({})); // true
console.log(isEmpty({a: 1})); // false三、使用 JSON.stringify() 方法
1、描述
JSON.stringify() 方法將對象轉(zhuǎn)換為 JSON 字符串。如果對象為空,它會返回 "{}",可以通過與該字符串做比較來判斷對象是否為空。
2、示例
function isEmpty(obj) {
return JSON.stringify(obj) === '{}';
}
console.log(isEmpty({})); // true
console.log(isEmpty({a: 1})); // false四、使用 for...in 循環(huán)
1、描述
for...in 循環(huán)會遍歷對象的所有可枚舉屬性。如果循環(huán)執(zhí)行一次,則說明對象不是空的。如果沒有執(zhí)行循環(huán),則說明對象為空。
2、示例
function isEmpty(obj) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
return false;
}
}
return true;
}
console.log(isEmpty({})); // true
console.log(isEmpty({a: 1})); // false五、使用 Object.entries() 方法
1、描述
Object.entries() 方法返回一個數(shù)組,數(shù)組中的每一項都是一個 [key, value] 鍵值對數(shù)組。如果該數(shù)組的長度為 0,則表示該對象為空。
2、示例
function isEmpty(obj) {
return Object.entries(obj).length === 0;
}
console.log(isEmpty({})); // true
console.log(isEmpty({a: 1})); // false六、Tips
1、原型鏈上的屬性:以上方法都是檢查對象本身的屬性,而不考慮原型鏈上的屬性。如果您需要考慮原型鏈上的屬性,可以使用 for...in 循環(huán),并結(jié)合 hasOwnProperty 方法來排除繼承的屬性。
2、不包括繼承的屬性:例如,如果您使用 Object.keys() 或 Object.getOwnPropertyNames(),它們只會列出對象本身的屬性,而不會列出從原型繼承來的屬性。
七、總結(jié)
1、最常用和推薦的方法是使用 Object.keys() 或 Object.entries(),它們非常簡潔且直觀。
2、如果您需要兼容老版本的 JavaScript 環(huán)境(如 ES5),則可以使用 for...in 循環(huán)或 Object.getOwnPropertyNames()。
到此這篇關(guān)于JavaScript如何判斷一個對象是空對象的文章就介紹到這了,更多相關(guān)JS判斷一個對象是空對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js?通過Object.defineProperty()?定義和控制對象屬性
這篇文章主要介紹了js?通過Object.defineProperty()?定義和控制對象屬性,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08
Js中FileReader讀取文件內(nèi)容方法詳解(async/await)
這篇文章主要給大家介紹了關(guān)于Js中FileReader讀取文件內(nèi)容(async/await)的相關(guān)資料,FileReader是前端進行文件處理的一個重要的Api,特別是在對圖片的處理上,如果你想知道圖片的處理原理,你就永遠不可能繞過它,需要的朋友可以參考下2023-11-11
ES2020讓代碼更優(yōu)美的運算符 (?.) (??)
這篇文章主要介紹了ES2020讓代碼更優(yōu)美的運算符 (?.) (??),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
JavaScript 中文轉(zhuǎn)拼音實現(xiàn)代碼 有些bug
在做項目時候遇到一個小小的顯示客戶部門名稱(拼音)的業(yè)務(wù),就是在部門名稱下有相應(yīng)的拼音,而在現(xiàn)有的數(shù)據(jù)庫中沒有相應(yīng)字段,并且部門數(shù)量比較多,添加起來比較費時,就想能否在js中實現(xiàn),在頁面中處理。2010-03-03
eslint+prettier統(tǒng)一代碼風(fēng)格的實現(xiàn)方法
這篇文章主要介紹了eslint+prettier 統(tǒng)一代碼風(fēng)格的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
JavaScript代碼中兩種常見的安全技術(shù):混淆和反混淆
文章介紹JavaScript混淆與反混淆技術(shù),用于保護代碼及逆向分析,涵蓋變量名替換、字符串混淆等手段,以及反調(diào)試措施,通過實戰(zhàn)案例展示如何利用開發(fā)者工具進行反混淆和調(diào)試2025-06-06

