Rumah > hujung hadapan web > tutorial js > Bagaimanakah Anda Dapatkan Nama Harta Warisan Tidak Terhitung dalam JavaScript?

Bagaimanakah Anda Dapatkan Nama Harta Warisan Tidak Terhitung dalam JavaScript?

Linda Hamilton
Lepaskan: 2024-11-09 04:23:02
asal
184 orang telah melayarinya

How Do You Retrieve Non-Enumerable Inherited Property Names in JavaScript?

Mengambil semula Nama Harta Diwarisi Tidak Dapat Dihitung dalam JavaScript

Dalam JavaScript, mengakses sifat objek adalah penting untuk manipulasi objek. Walaupun pelbagai kaedah wujud untuk mendapatkan semula sifat, mereka masing-masing memfokuskan pada jenis harta tertentu. Ini menimbulkan cabaran apabila cuba mengakses sifat tidak terhitung dan bukan milik objek.

Memahami Jenis Harta

Sifat JavaScript boleh dikategorikan kepada tiga jenis:

  • Sifat Sendiri: Ditakrifkan terus pada objek itu sendiri.
  • Sifat Diwarisi: Diwarisi daripada rantai prototaip objek.
  • Sifat Terbilang: Disenaraikan apabila menggunakan Object.keys() atau gelung untuk...dalam.
  • Sifat Tidak Terhitung: Tidak termasuk dalam keputusan Object.keys() atau untuk...dalam gelung.

Cabaran

Masalah timbul apabila cuba mendapatkan semula yang tidak terhitung, sifat bukan milik sesuatu objek. Kaedah konvensional seperti Object.keys() dan for...in loops tidak akan menyediakan sifat ini.

Penyelesaian: Melintasi Rantaian Prototaip

Untuk mendapatkan semula bukan- sifat bukan milik yang boleh dikira, fungsi tersuai boleh dibuat yang merentasi rantai prototaip objek. Fungsi ini menggunakan Object.getOwnPropertyNames() untuk mendapatkan semula sifat yang tidak boleh dikira, termasuk yang diwarisi daripada rantai prototaip.

Contoh Fungsi

function getAllProperties(obj) {
  var allProps = [];
  var curr = obj;

  do {
    var props = Object.getOwnPropertyNames(curr);
    props.forEach(function(prop) {
      if (allProps.indexOf(prop) === -1) {
        allProps.push(prop);
      }
    });
  } while ((curr = Object.getPrototypeOf(curr)));

  return allProps;
}

console.log(getAllProperties([1, 2, 3]));
Salin selepas log masuk

Output :

[ "0", "1", "2", "length" ]
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Anda Dapatkan Nama Harta Warisan Tidak Terhitung dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan