首頁 >web前端 >js教程 >如何有效測試空 JavaScript 物件?

如何有效測試空 JavaScript 物件?

DDD
DDD原創
2024-12-21 16:37:10793瀏覽

How Can I Effectively Test for Empty JavaScript Objects?

測試空 JavaScript 物件

處理 AJAX 回應時,常常會遇到空對象,例如 var a = {};。確定物件是否為空對於各種應用程式任務至關重要。

Object.hasOwn() 與 for...in 迴圈:

對於 ECMAScript 2022 環境, Object.hasOwn() 方法可以與 for...in循環結合使用來檢查是否為空物件:

function isEmpty(obj) {
  for (const prop in obj) {
    if (Object.hasOwn(obj, prop)) {
      return false;
    }
  }

  return true;
}

此方法會遍歷物件本身的所有屬性,如果找到任何屬性,則表示該物件非空物件。

區分空物件和物件沒有自己的屬性:

如果您需要區分類似 {}的空對象和沒有自己的屬性(例如日期)的對象,可以執行額外的類型檢查:

function isEmptyObject(value) {
  if (value == null) {
    return false; // null or undefined
  }

  if (typeof value !== 'object') {
    return false; // boolean, number, string, etc.
  }

  const proto = Object.getPrototypeOf(value);
  if (proto !== null && proto !== Object.prototype) {
    return false; // consider 'Object.create(null)'
  }

  return isEmpty(value);
}

替代方法:

如果您無權存取ES 2022 功能,您可以使用舊版Object.prototype.hasOwnProperty.call()方法:

function isEmpty(obj) {
  for (var prop in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, prop)) {
      return false;
    }
  }

  return true;
}

流行的函式庫函數:

許多流行的函式庫也提供了檢查空物件的函數:

  • jQuery: $.isEmptyObject({})
  • lodash: _.isEmpty({})
  • 下劃線:_.isEmpty({})
  • Hoek:Hoek.deepEqual({ek.deepEqual({ek.deepEqual({ek.deepEqual({ek.deepEqual({ek.deepEqual) }, {})
  • ExtJS:擴充。 Object.isEmpty({})
  • AngularJS(版本 1): angular.equals({}, {})
  • Ramda: R.isEmpty({})

以上是如何有效測試空 JavaScript 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn