Das expando-Attribut von Objekten in JScript ist ein wichtiges Mittel zum Hinzufügen von Mitgliedern zu Referenztypen wie Object und Array, aber diese Methode funktioniert nicht für Werttypen wie
var str = "string1";
str.method1 = function(){
//etwas tun
};
str.method1();//Hier wird ein Fehler angezeigt (ich habe es vergessen), dass
eine solche Anweisung in der C#-Programmierung nicht ausgeführt wird Um ihn in einen Referenztyp umzuwandeln, können wir auch eine ähnliche Operation durchführen Konvertieren Sie das Objekt (im Allgemeinen) in eine Zeichen-String-Darstellung, damit das Objekt mithilfe der Auswertungsfunktion wiederhergestellt werden kann.
Boolean.prototype.box = function(){
return new Boolean( this );
};
Number.prototype.box = function(){
neue Zahl zurückgeben( this );
};
String.prototype.box = function(){
return new String( this );
};
Boolean.prototype.unbox = function(){
return eval( this.toJSON() );
};
Number.prototype.unbox = function(){
return eval( this.toJSON() );
};
String.prototype.unbox = function(){
return eval( this.toJSON() );
};box bedeutet Einpacken, unbox bedeutet Auspacken. Der Testcode lautet wie folgt:
str = true.box();
alarm(str);
str = str.unbox();
warning( str ); Zu diesem Zeitpunkt verfügt unser JScript auch über Boxing-Operationen. Schauen wir uns die Anweisung am Anfang noch einmal an. Zu diesem Zeitpunkt können wir die drei Werttypen String, Boolean und Number genauso behandeln wie Object. Wir können das Expando-Attribut zur Laufzeit hinzufügen sehr praktisch?
Der Unboxing-Vorgang ist ebenfalls sehr einfach. Rufen Sie einfach etwas wie str.unbox() auf.