Dalam JavaScript / jQuery, jika saya memiliki alert
beberapa objek, saya mendapatkan salah satu [object]
atau [object Object]
Apakah ada cara untuk mengetahui:
apa perbedaan antara kedua benda ini
Jenis Objek apa ini
apa semua properti yang berisi objek ini dan nilai dari setiap properti
?
javascript
jquery
Saiful
sumber
sumber
Jawaban:
Anda dapat mencari kunci dan nilai objek dengan menjalankan
for in
loop asli JavaScript :atau menggunakan
.each()
metode jQuery :Dengan pengecualian enam tipe primitif , semua yang ada di ECMA- / JavaScript adalah sebuah objek. Array; fungsi; semuanya adalah obyek. Bahkan kebanyakan primitif itu sebenarnya juga objek dengan pilihan metode yang terbatas. Mereka dilemparkan ke objek di bawah kap, jika diperlukan. Untuk mengetahui nama kelas dasar, Anda dapat memanggil
Object.prototype.toString
metode pada objek, seperti ini:Di atas akan ditampilkan
[object Array]
.Ada beberapa nama kelas lainnya, seperti
[object Object]
,[object Function]
,[object Date]
,[object String]
,[object Number]
,[object Array]
, dan[object Regex]
.sumber
typeof new String("foo");
menghasilkan "objek", itu adalah nilai primitif yang dibungkus, sementaratypeof "foo";
menghasilkan "string". Lihat jugavar str = 'primitive'; str.foo = 'bar'; /*wouldn't work*/
sedangkanvar oStr = new String('string object'); oStr.foo = 'bar'; /*works*/
Jika Anda akan mengabstraksikannya dan memanggilnya semua objek, maka Anda bisa lolos dengan memikirkan primitif sebagai objek primitif, tetapi itu tidak setara dengan superclass objek JavaScript yang sebenarnya.console.log
untuk memeriksa objekUntuk mendapatkan daftar properti / nilai objek:
Di Firefox - Firebug:
JS standar untuk mendapatkan kunci objek yang dipinjam dari Slashnick :
Editan:
<object>
di atas akan diganti dengan referensi variabel ke objek.console.log()
digunakan di konsol, jika Anda tidak yakin apa itu, Anda dapat menggantinya denganalert()
sumber
Jawaban sederhananya adalah yang
[object]
menunjukkan objek host yang tidak memiliki kelas internal. Objek host adalah objek yang bukan bagian dari implementasi ECMAScript yang Anda kerjakan, tetapi disediakan oleh host sebagai ekstensi. DOM adalah contoh umum dari objek host, meskipun dalam implementasi yang paling baru objek DOM mewarisi dari Objek asli dan memiliki nama kelas internal (seperti HTMLElement , Window , dll). ActiveXObject milik IE adalah contoh lain dari objek host.[object]
paling sering terlihat saat memberi tahu objek DOM di Internet Explorer 7 dan yang lebih rendah, karena mereka adalah objek host yang tidak memiliki nama kelas internal.Anda bisa mendapatkan "tipe" (kelas internal) objek menggunakan
Object.prototype.toString
. Spesifikasi mengharuskannya selalu mengembalikan string dalam format[object [[Class]]]
, di mana[[Class]]
nama kelas internal seperti Object , Array , Date , RegExp , dll. Anda dapat menerapkan metode ini ke objek apa pun (termasuk objek host), menggunakanBanyak
isArray
implementasi menggunakan teknik ini untuk menemukan apakah suatu objek sebenarnya adalah sebuah array (meskipun tidak sekuat di IE seperti di browser lain ).Dalam ECMAScript 3, Anda dapat melakukan iterasi pada properti yang dapat dihitung menggunakan
for...in
loop. Perhatikan bahwa sebagian besar properti bawaan tidak dapat dihitung. Hal yang sama berlaku untuk beberapa objek host. Di ECMAScript 5, Anda bisa mendapatkan array yang berisi nama semua properti yang tidak diwarisi menggunakanObject.getOwnPropertyNames(obj)
. Array ini akan berisi nama properti non-enumerable dan enumerable.sumber
Saya harap ini tidak dihitung sebagai spam. Saya dengan rendah hati akhirnya menulis fungsi setelah sesi debug tanpa akhir: http://github.com/halilim/Javascript-Simple-Object-Inspect
Pemakaian
atau
sumber
Dapatkan FireBug untuk Mozilla Firefox.
menggunakan
console.log(obj);
sumber
console.log
sama efektifnya, Anda dapat mengklik objek di log untuk tetap mendapatkan "dir" ...Spotlight.js adalah pustaka yang bagus untuk melakukan iterasi pada objek jendela dan objek host lainnya untuk mencari hal-hal tertentu.
Anda akan menyukainya untuk ini.
sumber
Memindai objek untuk intance pertama dari prop yang ditentukan:
sumber