Télécharger la présentation
Publié parAimé Schmidt Modifié depuis plus de 10 années
1
Javascript les spécificités du langage - Partie 2-
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 propriétés ou des méthodes à l’extérieur même de l’objet et toutes les instances (ou copies) de cet objet auront accès à ces nouveaux attributs ou méthodes.
3
Le prototypage des fonctions
Vous pouvez ainsi très bien étendre un objet natif 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 2 alert(texte. positionCaractere ('e'));
4
Le prototypage des fonctions
Voyons maintenant la différence entre le prototypage et l’ajout de propriété à l’instance. function MonObjet() { this.maPropriete = 10; } // Crée une première instance var a = new MonObjet(); // crée une deuxième instance var b = new MonObjet(); // Prototype MonObjet MonObjet.prototype.nouvellePropriete = 12;
5
Le prototypage des fonctions
//Ajoute une nouvelle propriété à l'instance "a" a.nouvelAttribut = 8; // modifie une propriété de l'instance a // Affiche 12 alert(a.nouvellePropriete); // Affiche 8 alert(a.nouvelAttribut); alert(b.nouvellePropriete); // Affiche undefined alert(b.nouvelAttribut);
6
Le prototypage des fonctions
Le prototypage ne peut que se faire sur un objet qui va être instancié et disponible que pour ces instances, de même l’ajout de méthode ne peut que se faire sur une instance et non sur une instance d’instance.
7
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();
8
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 ».
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.