Accueil > Forum > > > > Syntaxe Etrange
Syntaxe Etrange
mercredi 2 avril 2008 à 11:50:31 |
Syntaxe Etrange

Ombitious_Developper
|
Salut: J'ai un bout de code: function X() { this.init(); } Lorsque j'instancie la fonction/classe X Firebug m'affiche une erreur: X.init is not a method Je me demande si init est vraimant une méthode vide? Ou bien une sorte de méthode "abstraite"? En effet, lorsque je rend X une classe fille d'une autre classe Y ayant une méthode init(), tout passe bien. function Y() { this.init = function() { alert("Y::init()"); }; }
function X() { this.init(); } X.prototype = new Y();
// Tout passe bien var x = new X();
// La méthode init() est évoquée deux fois. x.init(); Avez vous des explications concernant la syntaxe utilisée pour déclarée init dans la classe X? Merci.
|
|
mercredi 2 avril 2008 à 14:13:06 |
Re : Syntaxe Etrange

XtremDuke
|
Salut,
Pourquoi ton objet X est instancié par init ? S'il hérite du modèle de Y, tu n'as pas besoin de redefinir la fonction init() dans X. Tu cherches à faire quelque chose de précis ?
|
|
mercredi 2 avril 2008 à 14:18:43 |
Re : Syntaxe Etrange
|
mercredi 2 avril 2008 à 14:21:54 |
Re : Syntaxe Etrange

Ombitious_Developper
|
Salut:
J'ai fait le même raisonnement que toi.
Mais c'est un exemple que j'ai lu sur le site de Extjs.
|
|
mercredi 2 avril 2008 à 16:02:39 |
Re : Syntaxe Etrange

Zobibol
|
Bonjour, pourrais tu préciser ce que tu entends par " Avez vous des explications concernant la syntaxe utilisée pour déclarée init dans la classe X?" tu veux surclasser la méthode init de Y dans X ?
un petit exemple
function Y() { this.init = function() { return "appel de la méthode init() de Y"; }; }
function X() { this.init= function (){ // this.__proto__.init() appel la méthode init de la classe mère var ret = "appel de la méthode init() de X " + this.__proto__.init(); alert(ret); }; } X.prototype = new Y();
function testX(){ // Tout passe bien var x = new X(); // La méthode init() est évoquée une fois. x.init(); }
[o-_-o]
|
|
mercredi 2 avril 2008 à 16:33:22 |
Re : Syntaxe Etrange

Ombitious_Developper
|
Salut:
Zobibol >> Je vais reformuler ma question:
function X() { this.init(); }
Je me demande pourquoi utilises-t-on cette syntaxe?
Normalement, je me suis habitué à voir la déclaration d'une méthode ou d'un attribut, mais celle-ci me semble totalement différente.
Exécutes mon code et tu vois voir que la méthode init() est appelée deux fois.
|
|
mercredi 2 avril 2008 à 16:41:22 |
Re : Syntaxe Etrange

Zobibol
|
Réponse acceptée !
oui c'est normal qu'elle soit executée deux fois ta méthode je m'explique : var x = new X(); ceci fait afficher la première popup, mais pourquoi me demanderas-tu ;o)
simplement parce que tu as définit
function X() { this.init(); }
le fait de faire un new X() instancie donc ta méthode (c'est space mais bon), or, l'interpreteur considère que tout ce qui est dans la méthode X() fait partit du constructeur. ainsi, lors de l'interprétation de new X(), il execute le contenu de la méthode X (notament init()).
je ne sais pas si c'est assez clair ! j'avoue avoir eu du mal à appréhender au début cette syntaxe mais cela ouvre des portes non négligeable au possiblité qu'offre JavaScript.
[o-_-o]
|
|
mercredi 2 avril 2008 à 16:49:56 |
Re : Syntaxe Etrange

Zobibol
|
Voilà après un peu de nicotine dans le poumon, un exemple un peu plus "parlant"
function PourTest(){ this.showMessage = function (_message){ alert (_message); } }
function PourTestMessage(){ this.showMessage("instance (new PourTestMessage())"); }
PourTestMessage.prototype = new PourTest();
var message = new PourTestMessage();
message.showMessage("instance ok");
il va donc y avoir deux message : le premier : "instance (new PourTestMessage())" appelé lors du new PourTestMessage(); et le second "instance ok" appelé lors du message.showMessage("instance ok"); et voilà donc l'origine des deux popup !
[o-_-o]
|
|
mercredi 2 avril 2008 à 21:46:14 |
Re : Syntaxe Etrange

Ombitious_Developper
|
Réponse acceptée !
Salut:
Désolé pour le dérrangement mes amis.
Il s'avère que j'ai fait une grosse erreur, vu que dans la déclaration:
function X() { this.init(); }
on fait juste un appel à la méthode init() qui sera héritée par la suite d'une autre classe.
Merci beaucoup pour votre coopération.
|
|
mercredi 2 avril 2008 à 21:50:06 |
Re : Syntaxe Etrange

Ombitious_Developper
|
Salut: "j'avoue avoir eu du mal à appréhender au début cette syntaxe mais cela ouvre des portes non négligeable au possiblité qu'offre JavaScript." C'est ça le gros problème, il faut s'habituer aux mécanismes de JavaScript. Si quelque chose n'est pas déclarée, tu peux le faire par la suite. Après tout, c'est une lesson à apprendre. 
|
|
Cette discussion est classée dans : function, classe, méthode, syntaxe, init
Répondre à ce message
Sujets en rapport avec ce message
Comment faire des classes imbriquées [ par diaod8 ]
Voila, j'ai un bout de code en javascript, je ne comprend pas pourquoi mes classes imbriqué ne fonctionnent pas, j'aimerais que quelqu'un m'explique.
pb dans code: marche pas [ par nanonerie ]
nanonerie calcul
Pb avec un script (menu deroulant vertical) sur IE [ par batmkana ]
Bonjour, J'ai un soucis avec un script qui fonctionne sur Firefox, et quelques version d'IE, mais pas les dernières (7. ...)Voici le script :/*=======
MOUSE OVER [ par mimosa803 ]
salut à tous, je veux réalisé l'événement Mouse over et Mouse out ,mais ca ne fonctionne pas,donc j'éspere que vous m'aider et merci d'avance.Mouse
page unique [ par mimosa803 ]
bonsoir à tous , bon j'ai un petit problème: j'ai un liste déroulante nommée"liste" ,je veux que lorsque je séléctionne un chiffre, sa table de multip
function non exécutée après contrôle de formulaire [ par cousinlol ]
Bonjour, Juste un p'tit truc qui m'échappe J'ai un formulaire, sur lequel je fais un petit contrôle : <table align="center" border="0" cellpaddin
Problème avec la méthode String.split() et les "\" [ par Kenshin07 ]
Bonjour,je développe un module d'upload, et j'aimerais pouvoir récupérer le nom du fichier sélectionné afin de le mettre dans la value de mon TextBox.
Probleme javascript sous firefox [ par abdelilahw3 ]
bonjour,j'ai un problème avec le code qui suit, je souhaite l'utiliser avec firefox , mais il ne marche que sous IEmerci bien de m'aider.<
Méthode POST (AJAX) sous Safari [ par eplanet ]
Bonjour à tous, voilà mon problème, j'essaie d'utiliser la méthode POST en AJAX, ca marche bien sous Firefox et sous IE (6 et 7), mais pas sous Safari
Problème [ par miximog ]
Bonjour,J'ai un probleme, j'ai passé toute l'après-midi à éssayer de faire marcher un script que j'ai trouver sur le net. C'est un classe qui est devr
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|