Upload
jorn
View
33
Download
2
Embed Size (px)
DESCRIPTION
Javascript les spécificités du langage - Partie 2-. Le prototypage des fonctions. Le prototypage est en quelques sortes un système d’héritage, cependant, pas comme on peut le voir dans les langages objets. Une fois un objet défini, il est alors possible d’y ajouter des - PowerPoint PPT Presentation
Citation preview
Javascriptles spécificités du langage
- Partie 2-
Le prototypage des fonctions
Le prototypage est en quelques sortes unsystème d’héritage, cependant, pas comme onpeut le voir dans les langages objets. Une fois unobjet défini, il est alors possible d’y ajouter despropriétés ou des méthodes à l’extérieur mêmede l’objet et toutes les instances (ou copies) decet objet auront accès à ces nouveaux attributsou méthodes.
Le prototypage des fonctions
Vous pouvez ainsi très bien étendre un objetnatif du langage comme String :
String.prototype.positionCaractere = function(caractere) { var compteur = 0; for(var index=0;index<this.length;index++) { if(this.charAt(index)== caractere) compteur++; } return compteur;}
var texte = "Hello";//Va afficher 2alert(texte. positionCaractere ('e'));
Le prototypage des fonctions
Voyons maintenant la différence entre leprototypage et l’ajout de propriété à l’instance.
function MonObjet() { this.maPropriete = 10;} // Crée une première instancevar a = new MonObjet(); // crée une deuxième instancevar b = new MonObjet(); // Prototype MonObjetMonObjet.prototype.nouvellePropriete = 12;
Le prototypage des fonctions//Ajoute une nouvelle propriété à l'instance "a"a.nouvelAttribut = 8; // modifie une propriété de l'instance a
// Affiche 12alert(a.nouvellePropriete);
// Affiche 8alert(a.nouvelAttribut);
// Affiche 12alert(b.nouvellePropriete);
// Affiche undefinedalert(b.nouvelAttribut);
Le prototypage des fonctions
Le prototypage ne peut que se faire sur un objetqui va être instancié et disponible que pour cesinstances, de même l’ajout de méthode ne peutque se faire sur une instance et non sur uneinstance d’instance.
Le prototypage des fonctions
var tab = [1,2,3];
Object.prototype.alert = function() { for(index in this) { alert(this[index]); }}
// Affiche 1// Affiche 2// Affiche 3// Affiche [Object]tab.alert();
Le prototypage des fonctions
Il n’y a hélas pas de solution propre en Javascript 1.5, la seule manière de palier à ce problème est de tester que le type de la variable n’est pas une fonction. Dans des versions plus évoluées de Javascript il est possible d’ajouter des fonctions non énumérables aux objets grâce à « defineProperty ».