Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menentukan Secara Berkesan sama ada Objek JavaScript Kosong?

Bagaimanakah Saya Boleh Menentukan Secara Berkesan sama ada Objek JavaScript Kosong?

DDD
DDDasal
2024-12-24 14:00:19502semak imbas

How Can I Effectively Determine if a JavaScript Object is Empty?

Menentukan Kekosongan Objek JavaScript

Untuk memastikan sama ada objek JavaScript kosong, pelbagai kaedah dan pertimbangan tersedia. Satu pendekatan melibatkan penggunaan gelung for...in bersama-sama dengan Object.hasOwn (ECMA 2022 ). Gelung ini berulang melalui sifat objek sendiri dan mengembalikan palsu jika wujud:

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

  return true;
}

Kaedah lain membezakan objek kosong tussen dan objek lain yang tidak mempunyai sifat sendiri. Ini boleh dicapai melalui semakan jenis:

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

  if (typeof value !== 'object') {
    return false;
  }

  const proto = Object.getPrototypeOf(value);

  if (proto !== null && proto !== Object.prototype) {
    return false;
  }

  return isEmpty(value);
}

Adalah penting untuk ambil perhatian bahawa membandingkan dengan Object.prototype mungkin terlepas pandang objek merentas alam. Selain itu, Object.keys(obj).length tidak digalakkan kerana ia tidak cekap, memerlukan penciptaan tatasusunan.

Untuk keserasian dengan enjin JavaScript yang lebih lama, Object.hasOwn boleh digantikan dengan Object.prototype.hasOwnProperty.call :

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

  return true;
}

Pelbagai perpustakaan menawarkan fungsi yang direka khusus untuk menyemak objek kosong:

  • jQuery: jQuery.isEmptyObject({}) // true
  • Lodash: _.isEmpty({}) // true
  • Underscore: _.isEmpty({}) // benar
  • Hoek: Hoek.deepEqual({}, {}) // true
  • ExtJS: Ext.Object.isEmpty({}) // true
  • AngularJS (versi 1): angular.equals({ }, {}) // benar
  • Ramda: R.isEmpty({}) // benar

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Secara Berkesan sama ada Objek JavaScript Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn