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

Bagaimana untuk Dapatkan Nama Harta Warisan Tidak Terhitung dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-11-09 07:57:02843semak imbas

How to Retrieve Non-Enumerable Inherited Property Names in JavaScript?

Mendapatkan Nama Harta Diwarisi Tidak Boleh Dikira bagi Objek dalam JavaScript

JavaScript menyediakan pelbagai kaedah untuk mengakses sifat objek berdasarkan keperluan khusus. Walau bagaimanapun, tiada satu pun daripada kaedah ini membenarkan untuk mendapatkan semula harta yang tidak terhitung, bukan milik sendiri. Artikel ini meneroka pendekatan alternatif untuk mengekstrak sifat sedemikian.

Penyelesaian: Memanfaatkan getOwnPropertyNames dan Rantaian Prototaip

Memandangkan Object.getOwnPropertyNames() boleh mendapatkan semula sifat yang tidak boleh dikira, ia boleh digabungkan dengan prototaip rantai traversal. Fungsi JavaScript berikut, getAllProperties(), berulang melalui rantaian prototaip objek dan menyusun senarai semua sifat bukan miliknya yang tidak boleh dikira:

fungsi getAllProperties(obj){

var allProps = []
  , 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

}

Contoh Penggunaan

Untuk menunjukkan kefungsian fungsi getAllProperties() , pertimbangkan tatasusunan berikut objek:

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

Output:

[ 'length' ]

Output menyenaraikan 'panjang' sifat tidak terhitung, yang dimiliki oleh rantai Array.prototype.

Atas ialah kandungan terperinci Bagaimana untuk Dapatkan Nama Harta Warisan Tidak Terhitung dalam JavaScript?. 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