Saya mencoba memberi tahu nilai yang dikembalikan dari suatu fungsi dan saya mendapatkan ini di peringatan:
[object Object]
Ini kode JavaScript-nya:
<script type="text/javascript">
$(function ()
{
var $main = $('#main'),
$1 = $('#1'),
$2 = $('#2');
$2.hide(); // hide div#2 when the page is loaded
$main.click(function ()
{
$1.toggle();
$2.toggle();
});
$('#senddvd').click(function ()
{
alert('hello');
var a=whichIsVisible();
alert(whichIsVisible());
});
function whichIsVisible()
{
if (!$1.is(':hidden')) return $1;
if (!$2.is(':hidden')) return $2;
}
});
</script>
whichIsVisible
adalah fungsi yang saya coba periksa.
javascript
jquery
Prady
sumber
sumber
Jawaban:
Konversi default dari objek menjadi string adalah
"[object Object]"
.Saat Anda berurusan dengan objek jQuery, Anda mungkin ingin melakukannya
untuk mencetak ID elemen.
Seperti yang disebutkan dalam komentar, Anda harus menggunakan alat yang disertakan dalam browser seperti Firefox atau Chrome untuk melakukan introspeksi objek dengan melakukan
console.log(whichIsVisible())
daripadaalert
.Catatan samping : ID tidak boleh dimulai dengan angka.
sumber
Seperti yang telah dicatat orang lain, ini adalah serialisasi default dari suatu objek. Tetapi mengapa demikian
[object Object]
dan tidak adil[object]
?Itu karena ada berbagai jenis objek di Javascript!
stringify(function (){})
->[object Function]
stringify([])
->[object Array]
stringify(/x/)
->[object RegExp]
stringify(new Date)
->[object Date]
stringify({})
->[object Object]
Itu karena fungsi konstruktor disebut
Object
(dengan huruf besar "O"), dan istilah "objek" (dengan "o" kecil) mengacu pada sifat struktural benda tersebut.Biasanya, saat Anda berbicara tentang "objek" di Javascript, yang Anda maksud adalah " Objek objek ", dan bukan jenis lainnya.
dimana
stringify
seharusnya terlihat seperti ini:sumber
thingy
JSON.stringify
, seseorang dapat mengambil kesan yang salah.Object.prototype.toString.call(undefined)
memberi[object Undefined]
?[object Object]
adalah representasi toString default dari suatu objek dalam javascript.Jika Anda ingin mengetahui properti objek Anda, teruskan saja seperti ini:
Dalam kasus khusus Anda, Anda mendapatkan objek jQuery. Coba lakukan ini sebagai gantinya:
Ini harus mengingatkan id dari elemen yang terlihat.
sumber
Ini adalah nilai yang dikembalikan oleh
toString()
fungsi objek itu .Saya mengerti apa yang Anda coba lakukan, karena saya menjawab pertanyaan Anda kemarin tentang menentukan div mana yang terlihat. :)
The
whichIsVisible()
fungsi mengembalikan sebuah objek jQuery yang sebenarnya, karena saya pikir itu akan menjadi lebih pemrograman berguna. Jika Anda ingin menggunakan fungsi ini untuk tujuan debugging, Anda bisa melakukan sesuatu seperti ini:Karena itu, Anda benar-benar harus menggunakan debugger yang tepat daripada
alert()
jika Anda mencoba men-debug masalah. Jika Anda menggunakan Firefox, Firebug sangat bagus. Jika Anda menggunakan IE8, Safari, atau Chrome, mereka memiliki debugger bawaan.sumber
Anda dapat melihat nilai di dalam [Objek Objek] seperti ini
Coba seperti ini
referensi
https://off.tokyo/blog/react-native-object-object/
sumber
Dasar-dasar
Anda mungkin tidak mengetahuinya tetapi, dalam JavaScript, setiap kali kita berinteraksi dengan string, angka, atau boolean primitif, kita memasuki dunia tersembunyi dari bayangan dan pemaksaan objek.
string, number, boolean, null, undefined, dan simbol.
Dalam JavaScript ada 7 tipe primitif:
undefined
,null
,boolean
,string
,number
,bigint
dansymbol
. Segala sesuatu yang lain adalah sebuah objek. Tipe primitifboolean
,string
dannumber
bisa dibungkus oleh rekan objeknya. Objek-objek ini masing-masing adalah instance dariBoolean
,String
danNumber
konstruktor.Jika primitif tidak memiliki properti, mengapa
"this is a string".length
mengembalikan nilai?Karena JavaScript akan dengan mudah memaksa antara primitif dan objek. Dalam hal ini nilai string dipaksa ke objek string untuk mengakses panjang properti. Objek string hanya digunakan sepersekian detik setelah itu dikorbankan untuk Dewa pengumpulan sampah - tetapi dalam semangat acara penemuan TV, kami akan menjebak makhluk yang sulit dipahami dan melestarikannya untuk analisis lebih lanjut ...
Untuk mendemonstrasikan hal ini lebih lanjut pertimbangkan contoh berikut di mana kita menambahkan properti baru ke prototipe konstruktor String.
Dengan cara ini, primitif memiliki akses ke semua properti (termasuk metode) yang ditentukan oleh konstruktor objeknya masing-masing.
Jadi kita melihat bahwa tipe primitif akan dengan tepat memaksa ke rekan Object masing-masing saat diperlukan.
Analisis
toString()
metodePerhatikan kode berikut
Seperti dibahas di atas, apa yang sebenarnya terjadi adalah ketika kita memanggil
toString()
metode pada tipe primitif, itu harus dipaksakan ke pasangan objeknya sebelum bisa memanggil metode.yaitu
myNumber.toString()
setara denganNumber.prototype.toString.call(myNumber)
dan serupa untuk tipe primitif lainnya.Tetapi bagaimana jika alih-alih tipe primitif yang diteruskan ke
toString()
metode mitra fungsi konstruktor Objek yang sesuai, kita memaksa tipe primitif untuk diteruskan sebagai parameter ketoString()
metode konstruktor fungsi Objek (Object.prototype.toString.call(x)
)?Melihat lebih dekat ke Object.prototype.toString ()
Sesuai dokumentasi , Ketika metode toString dipanggil, langkah-langkah berikut diambil:
Pahami ini dari contoh berikut
Referensi: https://es5.github.io/x15.2.html#x15.2.4.2 https://es5.github.io/x9.html#x9.9 https://javascriptweblog.wordpress.com/ 2010/09/27 / the-secret-life-of-javascript-primitives /
sumber
[object Object]
adalah representasi string default dari JavaScriptObject
. Inilah yang akan Anda dapatkan jika Anda menjalankan kode ini:Anda dapat mengubah representasi default dengan mengganti
toString
metode seperti ini:sumber
[object Object]
string itu berasal.Anda memiliki objek javascript
$1
dan$2
merupakan objek jquery, mungkin digunakanalert($1.text());
untuk mendapatkan teks ataualert($1.attr('id');
dll ...Anda harus memperlakukan
$1
dan$2
menyukai objek jQuery.sumber
Anda mencoba mengembalikan suatu objek. Karena tidak ada cara yang baik untuk merepresentasikan objek sebagai string, nilai objek
.toString()
secara otomatis ditetapkan sebagai"[object Object]"
.sumber