Menyahkod Enigma Objek JavaScript
Dalam bidang JavaScript, kewujudan objek di mana-mana sering menimbulkan persoalan. Walaupun tatasusunan dan fungsi mempamerkan gelagat seperti objek, merungkai sifat misteri "String" dan "Nombor" boleh membingungkan.
Sifat Nilai Primitif yang Sukar difahami
Bertentangan dengan kepercayaan popular, bukan semua dalam JavaScript adalah objek. Unsur teras seperti rentetan, nombor dan boolean dikelaskan sebagai primitif, dicirikan oleh sifatnya yang tidak berubah. Tidak seperti objek sebenar, primitif tidak mempunyai kaedah dan sifat.
Ilusi Objektif
JavaScript menggunakan helah bijak untuk menjadikan primitif kelihatan seperti objek. Apabila cuba mengakses sifat primitif (cth., s.substring(1, 2)), JavaScript mencipta objek pembalut dengan lancar (cth., String(s)) yang mempunyai kaedah yang diingini. Walau bagaimanapun, pembalut ini berumur pendek, hilang sebaik sahaja pelaksanaan kaedah selesai.
Bukti: Harta Yang Tidak Boleh Dicapai
Ilusi ini menjadi jelas apabila memberikan sifat kepada primitif , yang akhirnya terbukti sia-sia. Pertimbangkan kod:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
Walaupun memperuntukkan harta kepada s primitif, percubaan untuk mendapatkan semula ia menghasilkan yang tidak ditentukan. Ini kerana sifat itu dilampirkan pada objek pembalut fana, yang dibuang apabila kaedah selesai.
Fungsi: Objek Benar
Berbeza dengan primitif, fungsi JavaScript ialah objek yang sah, mewarisi daripada prototaip Objek. Ini memberi mereka keupayaan untuk memiliki sifat dan melaksanakan mana-mana kaedah berasaskan objek.
Penugasan Harta dalam Fungsi
Fungsi boleh bertindak sebagai objek biasa, membenarkan penetapan harta dan pengambilan semula :
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
Dengan memahami perbezaan antara objek primitif dan sah dalam JavaScript, kami menghilangkan kekeliruan yang mengelilingi tanggapan meluas bahawa "hampir semuanya adalah objek."
Atas ialah kandungan terperinci Adakah Rentetan dan Nombor Benar-benar Objek dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!