Untuk memudahkan operasi nilai jenis asas, ECMAScript juga menyediakan 3 jenis rujukan khas: Boolean, Number dan String. Jenis ini adalah serupa dengan jenis rujukan lain yang diperkenalkan dalam bab ini, tetapi juga mempunyai tingkah laku khas yang sepadan dengan jenis asas masing-masing. Malah, apabila nilai jenis asas dibaca, objek jenis pembalut asas yang sepadan akan dibuat di latar belakang, membolehkan kami memanggil beberapa kaedah untuk memanipulasi data ini. Contoh di bawah:
var s1="sesetengah teks";
var s2=s1.substring(2);
Pembolehubah s1 dalam contoh ini mengandungi rentetan Rentetan sudah tentu merupakan nilai jenis asas, dan baris kod seterusnya memanggil kaedah subrentetan() s1 dan menyimpan hasil yang dikembalikan dalam s2. Kami tahu bahawa nilai jenis primitif bukan objek, jadi secara logiknya mereka tidak sepatutnya mempunyai kaedah (walaupun, seperti yang kita mahu, mereka ada). Malah, untuk kami mencapai operasi intuitif ini, satu siri proses telah dilengkapkan secara automatik di latar belakang. Apabila baris kedua kod mengakses s1, proses capaian berada dalam mod baca, iaitu nilai rentetan ini dibaca daripada memori. Apabila mengakses rentetan dalam mod baca, pemprosesan berikut akan diselesaikan secara automatik di latar belakang.
1. Buat contoh jenis String;
2. Panggil kaedah yang dinyatakan pada contoh;
3. Musnahkan contoh ini.
Anda boleh memikirkan tiga langkah di atas sebagai melaksanakan kod ECMAScript berikut.
var s2=s1.substring(2);
s1=null;
Selepas pemprosesan ini, nilai rentetan asas menjadi sama dengan objek, dan tiga langkah di atas juga boleh digunakan untuk nilai Boolean dan angka yang sepadan dengan jenis Boolean dan Nombor masing-masing.
Perbezaan utama antara jenis rujukan dan jenis pembungkusan asas ialah jangka hayat objek. Contoh jenis rujukan yang dibuat menggunakan operator baharu kekal dalam ingatan sehingga aliran pelaksanaan meninggalkan skop semasa. Objek jenis pembungkusan asas yang dibuat secara automatik hanya wujud pada masa apabila baris kod dilaksanakan, dan kemudian dimusnahkan serta-merta. Ini bermakna kita tidak lagi boleh menambah sifat dan kaedah kepada nilai jenis primitif pada masa jalan. Sebagai contoh di bawah:
Salin kod
makluman(s1.color);//undefined
Di sini, baris kedua kod cuba menambah atribut warna pada rentetan s1. Walau bagaimanapun, apabila baris ketiga kod mengakses s1 di sini, sifat warnanya hilang. Punca masalah ialah objek String yang dibuat dalam baris kedua telah dimusnahkan apabila baris ketiga kod dilaksanakan. Baris ketiga kod mencipta objek String sendiri, yang tidak mempunyai atribut warna.
Sudah tentu, anda boleh memanggil Boolean, Number dan String secara eksplisit untuk mencipta objek jenis pembungkusan asas. Walau bagaimanapun, anda hanya perlu melakukan ini apabila benar-benar perlu, kerana mudah untuk melupakan sama ada anda berurusan dengan jenis pembungkus asas atau merujuk nilai jenis pembungkus asas. Memanggil typeof pada contoh jenis pembungkus asas mengembalikan "objek", dan semua objek jenis pembungkus asas ditukar kepada nilai Boolean benar.
Pembina Objek juga akan, seperti kaedah kilang, mengembalikan tika jenis pembalut asas yang sepadan berdasarkan jenis nilai yang dihantar. Contohnya:
Salin kod
Melepasi rentetan kepada pembina Objek akan mencipta contoh String yang lulus dalam parameter angka akan mendapat contoh Nombor, dan menghantar parameter Boolean akan mendapat contoh Boolean.
Perlu diingat bahawa menggunakan baru untuk memanggil pembina jenis pembungkusan asas adalah berbeza daripada memanggil terus fungsi transformasi dengan nama yang sama. Contohnya:
Salin kod
makluman(jenis nombor); //"nombor"
var obj=nombor baharu(nilai); //Pembina
makluman(jenis objek); //"objek"
In diesem Beispiel speichert die Variable number den Basistypwert 25 und die Variable obj speichert eine Instanz von Number.
Obwohl wir nicht empfehlen, Objekte mit grundlegenden Wrapper-Typen explizit zu erstellen, ist ihre Fähigkeit, grundlegende Typwerte zu manipulieren, dennoch sehr wichtig. Jeder grundlegende Wrapper-Typ bietet praktische Methoden zum Bearbeiten des entsprechenden Werts.
Das ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt euch allen.