8
Javascript les spécificités du langage - Partie 2-

Javascript les spécificités du langage - Partie 2-

  • 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

Page 1: Javascript les spécificités du langage - Partie  2-

Javascriptles spécificités du langage

- Partie 2-

Page 2: Javascript les 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.

Page 3: Javascript les spécificités du langage - Partie  2-

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'));

Page 4: Javascript les spécificités du langage - Partie  2-

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;

Page 5: Javascript les spécificités du langage - Partie  2-

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);

Page 6: Javascript les spécificités du langage - Partie  2-

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.

Page 7: Javascript les spécificités du langage - Partie  2-

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();

Page 8: Javascript les spécificités du langage - Partie  2-

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 ».