Rumah >hujung hadapan web >tutorial js >Adakah JavaScript Primitif Benar-benar Objek?

Adakah JavaScript Primitif Benar-benar Objek?

Barbara Streisand
Barbara Streisandasal
2024-11-15 00:08:02368semak imbas

Are JavaScript Primitives Truly Objects?

Sifat Menarik Objek JavaScript

Dalam kedalaman pengaturcaraan, dunia JavaScript memberikan kelainan yang tidak dijangka: bukan semuanya objek . Walaupun banyak teks pengenalan membayangkan bahawa "hampir segala-galanya" berada di bawah klasifikasi ini, pemeriksaan lebih dekat mendedahkan kebenaran yang berbeza.

Pada terasnya, objek merangkum fungsi melalui kaedah dan sifat. Tatasusunan, misalnya, sesuaikan acuan ini dengan pasangan nilai kunci yang wujud. Walau bagaimanapun, apabila ia berkaitan dengan "String", "Nombor" dan "fungsi", garisan menjadi kabur.

Entiti ini mungkin kelihatan serupa dengan fungsi, melakukan transformasi pada input dan menghasilkan output tanpa akses yang jelas kepada sifat atau kaedah. Notasi titik kekal tidak wujud dengan jelas dalam kes sedemikian.

Teka-teki Pembungkus

Menyingkap misteri, kami mendedahkan perbezaan yang halus: primitif ini, seperti yang diketahui, tidak mempunyai intipati sebenar objek. Sebaliknya, mereka dibalut dengan pakaian objek, iaitu String, Number, dan Boolean. Pembalut ini mempunyai kaedah dan sifat, memberikan ilusi tingkah laku objek.

Sebagai contoh, pertimbangkan kod ini:

var s = "foo";
var sub = s.substring(1, 2); // sub becomes "o"

Di sebalik tabir, JavaScript melakukan satu siri langkah tersembunyi:

  1. Mencipta objek pembungkus Rentetan untuk s, dengan berkesan menggunakan baharu Rentetan.
  2. Melaksanakan kaedah subrentetan() pada objek pembalut dengan parameter yang ditentukan.
  3. Buang objek pembalut Rentetan.
  4. Mengembalikan rentetan yang terhasil (primitif ) dari langkah 2.

Ilusi Sifat

Walaupun nampaknya primitif boleh mempunyai sifat yang diberikan kepada mereka, percubaan sedemikian terbukti sia-sia seperti yang ditunjukkan oleh contoh berikut:

var s = "foo";
s.bar = "cheese";
alert(s.bar); // undefined

Ini berlaku kerana sifat ditakrifkan pada objek pembungkus Rentetan yang fana, yang dibuang segera, menjadikan harta itu tidak boleh diakses.

Fungsi: Objek dalam Penyamaran

Tidak seperti primitif, fungsi ialah objek lengkap yang diwarisi daripada Objek. Ini bermakna mereka memiliki semua keupayaan objek, termasuk keupayaan untuk memiliki sifat mereka sendiri. Saksikan contoh ini:

function foo() {}
foo.bar = "tea";
alert(foo.bar); // tea

Untuk Menyimpulkan

Dalam JavaScript, tidak semuanya memakai mantel objek. Primitif, disamarkan oleh pembungkus objek, mencipta ilusi tingkah laku objek. Hanya melalui pemahaman yang lebih mendalam tentang kerumitan JavaScript, sifat sebenar objeknya menjadi jelas.

Atas ialah kandungan terperinci Adakah JavaScript Primitif Benar-benar Objek?. 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