Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Quizz JavaScript - reponse : Le mot clé prototype - heritage en JavaScript

Voici avec un peu de retard la réponse au quizz JavaScript : le mot clé prototype.

La bonne réponse est :
Cyril
Je suis Cyril

En effet le prototype est le même pour toutes les instances d'un objet, il n'est pas figé lorsque l'on créer une instance, c'est une des particularités des langages dynamiques.

Le prototype est une propriété de l'objet function, il est créé dès que l'on appelle le constructeur d'une fonction c'est à dire dès que l'on fait une nouvelle instance d'une fonction :

var obj = new myFunction(); // obj.prototype existe

Cette propriété est un objet qui contient tous les membres (fonctions et propriétés) accessible par les instances de la fonction.

var f = function(){} f.prototype.hello = function(){ Sys.Debug.trace('hello'); } var o = new f(); o.hello(); // est accessible

On peut bien sur redéfinir un membre au niveau de l'instance d'un objet :

var f = function(){} f.prototype.hello = function(){ Sys.Debug.trace('hello'); } var o = new f(); o.hello = function(){ Sys.Debug.trace('hello modifié pour l'objet o uniquement'); } o.hello(); // affiche hello modifié ... var p = new f(); p.hello(); // affiche hello

En fait quand on appelle une méthode d'une instance, l'interpréteur JavaScript va d'abord regarder s'il trouve la méthode au niveau de l'instance puis il va regarder le prototype. Mais comme le prototype est une instance d'un objet il possède lui aussi un prototype, l'interpréteur va aussi regarder dans le prototype du prototype et ainsi de suite jusqu'à ce qu'il trouve la méthode. C'est une des façons de faire de l'héritage en JavaScript.

var f = function(){} f.prototype.hello = function(){ Sys.Debug.trace('hello'); } var g = function(){} g.prototype = new f(); g.prototype.coucou = function(){ Sys.Debug.trace('coucou'); } var o = new g(); o.coucou(); // affiche coucou o.hello(); // affiche hello

Lorsque l'interpréteur arrive sur o.hello() il va d'abord rechercher dans l'instance puis dans le prototype et enfin dans le prototype du prototype. On peut également redéfinir la méthode hello au niveau du type g et appeler la méthode hello de f, c'est à dire surcharger une méthode et appeler la méthode de base.

var f = function(){} f.prototype.hello = function(){ Sys.Debug.trace('hello from f'); } var g = function(){} g.prototype = new f(); g.prototype.hello = function(){ f.prototype.hello.apply(this, []); // appel de la méthode de base Sys.Debug.trace('hello from g'); } var o = new g(); o.hello(); // affiche hello from g et hello from g

Bien sur, on peut encore faire pleins d'autres choses avec le prototype d'une fonction, mais le but ici est de montrer que l'on peut changer les méthodes d'un type n'importe quand, le prototype n'est pas figé à une instance d'un objet.

En savoir plus sur le mot clé prototype :

Posted: mardi 28 août 2007 12:08 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01