Non standard
Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.
La méthode toSource()
renvoie une chaîne de caractères représentant le code source d'un objet.
Syntaxe
Object.toSource(); obj.toSource();
Valeur de retour
Une chaîne de caractères qui représente le code source de l'objet.
Description
La méthode toSource()
renvoie les valeurs suivantes :
- Pour l'objet natif
Object
,toSource()
renvoie la chaîne suivante, qui indique que le code source n'est pas disponible :function Object() { [native code] }
- Pour les instances de
Object
,toSource()
renvoie une chaîne représentant le code source.
La méthode toSource()
peut être utilisée à des fins de débogage pour analyser le contenu d'un objet.
Surcharger la méthode toSource()
La méthode toSource()
peut être surchargée pour les différents objets. Par exemple :
function Personne(nom) { this.nom = nom; } Personne.prototype.toSource = function Personne_toSource() { return 'new Personne(' + uneval(this.nom) + ')'; }; console.log(new Personne('Jean').toSource()); // ---> new Personne("Jean")
Les méthodes toSource()
natives
Chaque constructeur natif JavaScript possède sa propre méthode toSource()
. Ces objets sont :
Array.prototype.toSource()
— pourArray
.Boolean.prototype.toSource()
— pourBoolean
.Date.prototype.toSource()
— pourDate
.Function.prototype.toSource()
— pourFunction
.Number.prototype.toSource()
— pourNumber
.RegExp.prototype.toSource()
— pourRegExp
.String.prototype.toSource()
— pourString
.Symbol.prototype.toSource()
— pourSymbol
.Math.toSource()
— Renvoie "Math".
Limites : les objets cycliques
Dans le cas d'objets qui font référence à eux-mêmes (une liste cyclique ou un arbre), toSource()
ne représentera pas la référence (Firefox 24). Par exemple :
var obj1 = {}; var obj2 = { a: obj1 }; obj1.b = obj2; console.log('Cyclique : ' + (obj1.b.a == obj1)); var objSource = obj1.toSource(); // renvoie "({b:{a:{}}})" obj1 = eval(objSource); console.log('Cyclique : ' + (obj1.b.a == obj1));
Si on utilise une structure cyclique et qu'on a besoin de toSource()
, il faudra surcharger la méthode toSource()
pour avoir le comportement souhaité.
Exemples
Utiliser toSource()
Dans le code qui suit, on définit un objet Chien
et on crée monChien
qui est une instance de type Chien
:
function Chien(nom, race, couleur, sexe) { this.nom = nom; this.race = race; this.couleur = couleur; this.sexe = sexe; } monChien = new Chien('Gabby', 'Labrador', 'chocolat', 'femelle');
Si on appelle la méthode toSource()
sur monChien
, on obtiendra le littéral permettant de définir l'objet :
monChien.toSource(); // returns ({nom:"Gabby", race:"Labrador", couleur:"chocolat", sexe:"femelle"})
Spécifications
Cette méthode ne fait partie d'aucun standard, implémentée avec JavaScript 1.3.
Compatibilité des navigateurs
Ordinateur | Mobile | Serveur | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toSource | Chrome Aucun support Non | Edge Aucun support Non | Firefox Support complet 1 | IE Aucun support Non | Opera Aucun support Non | Safari Aucun support Non | WebView Android Aucun support Non | Chrome Android Aucun support Non | Firefox Android Support complet 4 | Opera Android Aucun support Non | Safari iOS Aucun support Non | Samsung Internet Android Aucun support Non | nodejs Aucun support Non |
Légende
- Support complet
- Support complet
- Aucun support
- Aucun support
- Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
- Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
- Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
- Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.