Je suis entrain de construire une modeste bibliothèque de classes JavaScript,
en évitant de surcharger les prototypes des classes de base ( afin de pouvoir
mélager des scripts de plusieurs sources sans trop me poser de questions).
Dans celle bibliothèque, j'aimerais avoir une classe MetaString héritant
de String et possédant des méthodes supplémentaires pour faire des
conversion urlEncode, base64, utf8, etc...
Voila ce que j'ai pour l'instant (et qui ne fonctionne pas...) :
MetaString = function ( value ) {
this.val = value || "" ;
return this;
}
MetaString.prototype = new String();
// Avec ou sans redéfinition de toString, j'obtiens un
// "String.prototype.toString called on incompatible Object" à la ligne du
// document.write. Mais avec, au moins, l'affichage de la chaine de caractère
// se fait correctement...
MetaString.prototype.toString = function() { return this.val; }
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
O.L.
Bonjour,
Je suis entrain de construire une modeste bibliothèque de classes JavaScript, en évitant de surcharger les prototypes des classes de base ( afin de pouvoir mélager des scripts de plusieurs sources sans trop me poser de questions).
Dans celle bibliothèque, j'aimerais avoir une classe MetaString héritant de String et possédant des méthodes supplémentaires pour faire des conversion urlEncode, base64, utf8, etc...
Voila ce que j'ai pour l'instant (et qui ne fonctionne pas...) :
MetaString = function ( value ) { this.val = value || "" ; return this; } MetaString.prototype = new String();
// Avec ou sans redéfinition de toString, j'obtiens un // "String.prototype.toString called on incompatible Object" à la ligne du // document.write. Mais avec, au moins, l'affichage de la chaine de caractère // se fait correctement... MetaString.prototype.toString = function() { return this.val; }
var s1 = new MetaString("demo"); document.write("<p>String = " + s1 + "</p>");
Comment faire pour que je puisse utiliser mes MetaString comme des String "normaux", sans récolter au passage des messages d'erreurs ?
Essaie en remplacant MetaString.prototype = new String();
par : MetaString.prototype = String;
-- Olivier Ligny Créateur web free-lance / www.cyber-tamtam.net
Bonjour,
Je suis entrain de construire une modeste bibliothèque de classes JavaScript,
en évitant de surcharger les prototypes des classes de base ( afin de pouvoir
mélager des scripts de plusieurs sources sans trop me poser de questions).
Dans celle bibliothèque, j'aimerais avoir une classe MetaString héritant
de String et possédant des méthodes supplémentaires pour faire des
conversion urlEncode, base64, utf8, etc...
Voila ce que j'ai pour l'instant (et qui ne fonctionne pas...) :
MetaString = function ( value ) {
this.val = value || "" ;
return this;
}
MetaString.prototype = new String();
// Avec ou sans redéfinition de toString, j'obtiens un
// "String.prototype.toString called on incompatible Object" à la ligne
du // document.write. Mais avec, au moins, l'affichage de la chaine de
caractère // se fait correctement...
MetaString.prototype.toString = function() { return this.val; }
Je suis entrain de construire une modeste bibliothèque de classes JavaScript, en évitant de surcharger les prototypes des classes de base ( afin de pouvoir mélager des scripts de plusieurs sources sans trop me poser de questions).
Dans celle bibliothèque, j'aimerais avoir une classe MetaString héritant de String et possédant des méthodes supplémentaires pour faire des conversion urlEncode, base64, utf8, etc...
Voila ce que j'ai pour l'instant (et qui ne fonctionne pas...) :
MetaString = function ( value ) { this.val = value || "" ; return this; } MetaString.prototype = new String();
// Avec ou sans redéfinition de toString, j'obtiens un // "String.prototype.toString called on incompatible Object" à la ligne du // document.write. Mais avec, au moins, l'affichage de la chaine de caractère // se fait correctement... MetaString.prototype.toString = function() { return this.val; }