Heim  >  Artikel  >  Web-Frontend  >  Typkonvertierung von JavaScript-Objekten

Typkonvertierung von JavaScript-Objekten

高洛峰
高洛峰Original
2016-11-25 15:31:401020Durchsuche

In JavaScript werden die Methoden toString() und alueOf() verwendet, um Objekte in grundlegende Datentypen oder Zeichenfolgen umzuwandeln.



Beim Konvertieren eines Objekts in einen String:

1. Rufen Sie die toString()-Methode des Objekts auf, um das Objekt in den zurückgegebenen String umzuwandeln Bei einem anderen Basisdatentyp wird dieser automatisch in einen String umgewandelt.

2 Wenn das Objekt keine toString()-Methode hat oder die Methode keinen Basisdatentyp zurückgibt, rufen Sie valueOf() auf. Methode auf die gleiche Weise;

3. Wenn die valueOf()-Methode nicht existiert oder der Rückgabewert kein Basisdatentyp ist, wird ein Fehler angezeigt (IE meldet möglicherweise keinen Fehler);

Js-Code
//Benutzerdefinierte Funktion (Klasse)
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject("MyObj");

//Normale Situation, rufen Sie zuerst die toString()-Methode auf
myObject.prototype.toString = function(){return 123;}; valueOf = function(){return 321;};
alert(myObj) ; //Das Ergebnis ist 123

//Die toString()-Methode gibt einen falschen Typ zurück, rufen Sie die valueOf()-Methode myObject.prototype.toString = function(){return new Date();}; myObject.prototype.valueOf = function(){return 321;}; //Das Ergebnis ist 321

//Die toString()-Methode existiert nicht, die valueOf()-Methode gibt einen falschen Typ zurück
myObject.prototype.toString = undefiniert;
myObject.prototype.valueOf = function() {return new Date();};
alert(myObj); // Prompt-Fehler (in IE8 keinen Fehler melden und [Object] auffordern)

//Benutzerdefinierte Funktion (Klasse)
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject("MyObj");

//Normalerweise rufe ich zuerst die auf toString() method
myObject.prototype.toString = function(){return 123;};
myObject .prototype.valueOf = function(){return 321;};
alert(myObj); Das Ergebnis ist 123

//Die toString()-Methode gibt einen falschen Typ zurück, rufen Sie die valueOf()-Methode auf
myObject.prototype.toString = function(){return new Date();};
myObject.prototype.valueOf = function(){return 321;};
alert(myObj); //Das Ergebnis ist 321

//toString() Methode existiert nicht, valueOf() Methode gibt falschen Typ zurück
myObject.prototype.toString = undefiniert;
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj); //Prompt-Fehler (Nr Fehler wird in IE8 gemeldet und fordert [Objekt])

Ähnlich wird die entsprechende Aktion beim Konvertieren des Objekts in einen Basisdatentyp ausgeführt. Verarbeitung, aber die Funktion valueOf() wird zuerst aufgerufen und nicht toString( ).

Beim Konvertieren eines Objekts in einen Basisdatentyp:

1. Rufen Sie die valueOf()-Methode des Objekts auf, um das Objekt in den zurückgegebenen Basisdatentyp zu konvertieren 2. Wenn das Objekt keine valueOf()-Methode hat oder die Methode keinen Basisdatentyp zurückgibt, rufen Sie die toString()-Methode auf die gleiche Weise auf, wenn die toString( ) Methode existiert nicht oder der Rückgabewert ist kein Basisdatentyp, es wird ein Fehler angezeigt



Js-Code
//Benutzerdefinierte Funktion (Klasse)
Funktion myObject(objectName)
{
this.objectName = objectName ; ) method
myObject.prototype.toString = function(){return 123;}
myObject.prototype.valueOf = function(){return 321;}; Das Ergebnis ist 642

//Die valueOf()-Methode gibt einen falschen Typ zurück, rufen Sie die toString()-Methode
myObject.prototype.toString = function(){return 123;}; auf .valueOf = function(){return new Date();};
alert(myObj*2); //Das Ergebnis ist 246

//Die toString()-Methode existiert nicht, der valueOf ()-Methode gibt einen falschen Typ zurück
myObject.prototype.toString = undefiniert;
myObject.prototype.valueOf = function(){return new Date();}
alert(myObj*2); /Fehleraufforderung

//Benutzerdefinierte Funktion (Klasse)
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject( "MyObj");

//Normalerweise zuerst valueOf( )Methode aufrufen
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function( ){return 321;};
Alert(myObj*2); //Das Ergebnis ist 642

//Die valueOf()-Methode gibt einen falschen Typ zurück, rufen Sie die toString()-Methode auf
myObject.prototype.toString = function(){ return 123; };
myObject.prototype.valueOf = function(){return new Date();};
alert(myObj*2); //Das Ergebnis ist 246

// toString()-Methode Existiert nicht, valueOf()-Methode gibt falschen Typ zurück
myObject.prototype.toString = undefiniert;
myObject.prototype.valueOf = function(){return new Date();};
Alert(myObj* 2); // Fehler anzeigen

Achten Sie besonders darauf, dass der Objektoperationsentwurf „+“ ausgeführt wird, da „+“ Berechnungsoperationen und String-Stitching-Operationen ausführen kann.

1. Wenn die beiden Operanden von „+“ Objekttypen haben, konvertieren Sie die Objekte zunächst gemäß den oben genannten Regeln in Basisdatentypen vom Typ String ist, konvertieren Sie den anderen Operanden in einen String; andernfalls konvertieren Sie beide Operanden in einen numerischen Typ (oder NaN) und führen Sie die Additionsoperation aus.



Js-Code
//Benutzerdefinierte Funktion (Klasse)
function myObject(objectName)
{
this.objectName = objectName; 🎜>var myObj = new myObject("MyObj");

//Unter normalen Umständen rufen Sie zuerst die Methode valueOf() auf und geben eine Zahl zurück
myObject.prototype.toString = function(){return 123; };
myObject.prototype.valueOf = function(){return 321;}; //Das Ergebnis ist 322 (addierte Werte)
alert(myObj + " 1" ; ;
myObject.prototype.valueOf = function(){return "321";};
alert(myObj + 1); //Das Ergebnis ist 3211 (String-Splicing)
alert(myObj + "1 "); //Das Ergebnis ist 3211 (String-Spleißen)

//Die Methode valueOf() gibt einen falschen Typ zurück, ruft die Methode toString() auf und gibt einen String
myObject zurück. Prototyp.toString = function( ){return "123";};
myObject.prototype.valueOf = function(){return new Date();}; //Das Ergebnis ist 1231 (String-Verkettung)
alert(myObj + "1"); //Das Ergebnis ist 1231 (String-Spleißen)

//Die toString()-Methode existiert nicht, die valueOf()-Methode gibt einen falschen Typ zurück
myObject.toString = undefiniert;
myObject.prototype.valueOf = function(){return new Date();}; // Prompt error (IE8 meldet keinen Fehler und fordert undefiniert auf)
alert(myObj + "1"); //Prompt-Fehler (IE8 meldet keinen Fehler und fordert undefiniert auf)

//Benutzerdefinierte Funktion (Klasse )
function myObject(objectName)
{
this.objectName = objectName;
}
var myObj = new myObject("MyObj");
www.2cto.com
//Rufen Sie normalerweise zuerst die Methode valueOf() auf und geben Sie die Nummer zurück
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return 321;} ;
alert(myObj + 1); /Das Ergebnis ist 322 (Zahlenaddition)
alert(myObj + "1"); //Das Ergebnis ist 3211 (String-Verkettung)

/ Normalerweise rufen Sie zuerst die Methode valueOf() auf und geben String
myObject.prototype.toString = function(){return 123;};
myObject.prototype.valueOf = function(){return "321";}; zurück.
alert(myObj + 1); //Das Ergebnis ist 3211 (String-Splicing)
alert(myObj + "1"); //Das Ergebnis ist 3211 (String-Splicing)

//Die Methode valueOf() gibt einen falschen Typ zurück, ruft die Methode toString() auf und gibt die Zeichenfolge
myObject.prototype.toString = function(){return "123";};
myObject.prototype zurück. valueOf = function (){return new Date();};
alert(myObj + 1); //Das Ergebnis ist 1231 (String-Verkettung)
alert(myObj + "1"); ist 1231 (Zeichen-String-Verkettung)

//Die toString()-Methode existiert nicht, die valueOf()-Methode gibt einen falschen Typ zurück
myObject.prototype.toString = undefiniert;
myObject.prototype .valueOf = function(){ return new Date();};
alert(myObj + 1); //Prompt-Fehler (IE8 meldet keinen Fehler und fordert undefiniert auf)
alert(myObj + "1 "); Fehler melden und Eingabeaufforderung undefiniert)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn