Atribut expando objek di JScript adalah cara penting untuk menambahkan anggota ke tipe referensi seperti Objek dan Array, tetapi metode ini tidak berfungsi untuk tipe nilai, seperti
varstr = "string1";
str.metode1 = fungsi(){
//melakukan sesuatu
};
str.method1();//Akan ada kesalahan di sini. Pesan kesalahannya (saya lupa) adalah jika str tidak ada,
pernyataan seperti itu tidak akan berjalan tipe nilai. untuk mengubahnya menjadi tipe referensi. Untuk ini, ada juga tipe nilai di JScript. Kita juga dapat melakukan operasi serupa. Implementasinya adalah sebagai berikut mengonversi objek (secara umum) menjadi karakter. Representasi string sehingga objek dapat dipulihkan menggunakan fungsi eval.
Boolean.prototipe.kotak = fungsi(){
kembalikan Boolean baru( ini );
};
Nomor.prototipe.kotak = fungsi(){
kembalikan Nomor baru (ini);
};
String.prototipe.kotak = fungsi(){
kembalikan String baru( ini );
};
Boolean.prototipe.unbox = function(){
kembali eval( ini.toJSON() );
};
Nomor.prototipe.unbox = function(){
kembali eval( ini.toJSON() );
};
String.prototipe.unbox = fungsi(){
kembali eval( ini.toJSON() );
};box artinya tinju, unbox artinya membuka kotak. Kode tesnya adalah sebagai berikut:
str = benar.kotak();
peringatan(str);
str = str.unbox();
alert( str ); Pada titik ini, JScript kami juga memiliki operasi tinju. Mari kita lihat kembali pernyataan di awal. Saat ini, kita dapat memperlakukan ketiga tipe nilai String, Boolean, dan Number seperti halnya Object. Kita dapat menambahkan atribut expando ke variabel tipe nilai saat runtime sangat nyaman?
Operasi unboxingnya juga sangat sederhana, cukup panggil sesuatu seperti str.unbox().