คุณลักษณะ expo ของอ็อบเจ็กต์ใน JScript เป็นวิธีสำคัญในการเพิ่มสมาชิกให้กับประเภทการอ้างอิง เช่น Object และ Array แต่วิธีนี้ใช้ไม่ได้กับประเภทค่า เช่น
var str = "string1";
str.method1 = ฟังก์ชั่น(){
//ทำอะไรสักอย่าง
};
str.method1();//จะมีข้อผิดพลาดที่นี่ ข้อความแสดงข้อผิดพลาด (ฉันลืม) คือหากไม่มี str
คำสั่งดังกล่าวจะไม่ทำงาน ในการเขียนโปรแกรม C# จะมีการดำเนินการแบบ boxing และ unboxing ประเภทค่า เพื่อแปลงเป็นประเภทอ้างอิง สำหรับสิ่งนี้ ยังมีประเภทค่าใน JScript อีกด้วย การดำเนินการของ toJSON() จะแสดงไว้ที่นี่ แปลงวัตถุ (โดยทั่วไป) ให้เป็นอักขระ เพื่อให้สามารถกู้คืนวัตถุได้โดยใช้ฟังก์ชัน eval
Boolean.prototype.box = ฟังก์ชั่น(){
กลับบูลีนใหม่ ( นี้ );
-
Number.prototype.box = ฟังก์ชั่น(){
คืนหมายเลขใหม่ ( นี้ );
-
String.prototype.box = ฟังก์ชั่น(){
กลับสตริงใหม่ ( นี้ );
-
Boolean.prototype.unbox = ฟังก์ชั่น(){
ส่งคืนการประเมิน ( this.toJSON() );
-
Number.prototype.unbox = ฟังก์ชั่น(){
ส่งคืนการประเมิน ( this.toJSON() );
-
String.prototype.unbox = ฟังก์ชั่น(){
ส่งคืนการประเมิน ( this.toJSON() );
};box แปลว่า มวย, unbox แปลว่า แกะกล่อง รหัสทดสอบมีดังนี้:
str = true.box();
การแจ้งเตือน (str);
str = str.unbox();
alert( str ); ณ จุดนี้ JScript ของเราก็มีฟังก์ชั่นการชกมวยด้วย มาดูคำสั่งที่จุดเริ่มต้นอีกครั้ง ในเวลานี้ เราสามารถจัดการกับค่า String, Boolean และ Number ทั้งสามประเภทได้เหมือนกับ Object สะดวกมาก?
การแกะกล่องก็ง่ายมาก เพียงเรียกบางอย่างเช่น str.unbox()