ATTENTION : Tutorial en cours d'écriture ! N'hésitez pas à nous signaler toute erreur ou suggestion.
Accès rapide :
Extension du prototype associé au constructeur Object
Extension du prototype associé au constructeur String
Extension du prototype associé au constructeur Array
Extension du prototype associé au constructeur Date
Extension du prototype associé au constructeur Element
Comme nous l'avons vu dans le chapitre précédent, Javascript approche la notion de classe via le concept de prototype. Nous avons aussi vu que, comme
la notion de classe n'existe pas en tant que telle, il est possible de modifier n'importe-quel objet et de lui ajouter des nouveaux membres à n'importe-quel
instant. Comme un prototype Javascript est lui même un objet, il est donc possible d'étendre un prototype à tout momment. En conséquence, il est
possible en Javascript, d'enrichir l'ensemble des méthodes proposées pour un type d'objet avec de nouvelles méthodes. La librairie JWT exploite cette
possibilité. C'est le fichier corelib/services/web/javascript/Core.js qui réalise les extensions de prototypes existants.
Object.prototype.clone : permet de cloner (de dupliquer une instance) en dupliquant, récursivement, toutes ses caractéristiques.
var Rational = Object.extendClass( new Object(), {
initialize : function( numerator, denominator ) {
this.numerator = numerator || 0;
this.denominator = denominator || 1;
},
toString : function() {
return "[" + this.numerator + "/" + this.denominator + "]";
}
});
var original = new Rational( 3, 5 );
var clone = original.clone();
original.numerator *= 2;
original.denominator *= 2;
alert( original + " - " + clone ); // display : [6/10] - [3/5]Object.prototype.extendClass : comme nous l'avons vu dans le chapitre précédent, cette méthode permet de mettre en oeuvre l'héritage au sein de la librairie JWT. L'exemple ci-dessus vous montre un l'utilisation de cette méthode. Je vous renvois aussi vers le chapitre précédent pour de plus amples informations.
Object.prototype.extendPrototype : permet d'enrichir un prototype existant. Cette méthode accepte un paramètre obligatoire : le tableau de membres à ajouter au prototype considéré. Elle accepte aussi un second paramètre facultatif : qui permet d'indiquer si, quand un membre du même nom existe déjà dans le prototype, on doit le remplacer ou non. Par défaut le membre n'est pas remplacé. Cela permet notamment, quand il y a des différences entre les navigateurs, de réaligner cette méthode (fonctionnellement parlant) en ajoutant un membre que là où le membre n'existe pas. Voici un petit exemple.
String.extendPrototype( {
left : function( pos ) {
if ( this.length <= pos ) return this;
return this.substring( 0, pos );
}
} );
alert( "theString".left(3) );
String.prototype.endsWith : renvoie true si la chaîne de caractères courante se termine par celle passée en paramètre,
false sinon.
alert( "Langage Javascript".endsWith( "Javascript" ) ); // retourne true
String.prototype.left : permet de produire une nouvelle chaine de caractères correspondant au x permiers caractères de la chaine considérée.
alert( "Langage Javascript".left( 7 ) ); // retourne "Langage"
String.prototype.right : permet de produire une nouvelle chaine de caractères correspondant au x derniers caractères de la chaine considérée.
alert( "Langage Javascript".right( 9 ) ); // retourne "Javascript"
String.prototype.startsWith : renvoie true si la chaîne de caractères courante commence par celle passée en paramètre,
false sinon.
alert( "Langage Javascript".startsWith( "Langage" ) ); // retourne true
String.prototype.trim : permet d'enlever les séparateurs (blancs, tabulations et retours à la ligne) présents en début et en fin de la chaine de caractères considérée.
alert( " \ttoto\n ".trim() ); // retourne "toto"
Array.prototype.contains : permet de tester si un tableau de valeur possède ou non une valeur particulière. Le resultat est soit
true soit false.
var tb = new Array(); tb.push( "toto" ); tb.push( "titi" ); tb.push( "tata" ); alert( tb.contains( "toto" ) );
Date.prototype.getWeek : retourne le numéro de semaine dans l'année.
alert( new Date().getWeek() );
Element.prototype.addCssClass : ajoute une nouvelle classe de style CSS complémentaire sur l'élément considéré.
$("tagId").addCssClass( "temporaryCssClass" );Element.prototype.createAndAppendChild : permet, en un seul appel, de créer un nouvel élément (un nouveau tag) en lui spécifiant la liste de ses attributs, la liste des ces valeurs de style CSS et d'ajouter ce nouvel élément au tag sur lequel la méthode est invoquée.
document.body.createAndAppendChild( "h1", // Element name
{ innerHTML: "Un nouveau titre de niveau 1" }, // Element attribute definitions
{ color: "red", margin: "10px" } // CSS style definitions
);Element.prototype.removeCssClass : supprime, sur l'élément courant, la classe de style CSS spécifiée en paramètre.
$("tagId").removeCssClass( "temporaryCssClass" );|
ATTENTION : Ellipse Framework vous est proposé en version beta (d'évaluation) afin de vous permettre d'évaluer ce framework.
Infini Software se dégage de toutes responsabilités relatives à l'utilisation de ce framework.
De plus, Infini Software ne pourra nullement être tenu responsable de l'utilisation des informations présentes dans ces tutoriaux.
|
|
|||
|
Dominique LIARD - © 2007..2012 SARL Infini Software -
Tous droits réservés
Les autres marques et les noms de produits cités dans ces documents sont la propriété de leurs détenteurs respectifs. | ||||