Bonjour,
Comment faire de l'heritage avec l'API Prototype ?
Merci d'avance
Bonjour,
Comment faire de l'heritage avec l'API Prototype ?
Merci d'avance
Bonjour
ça se fait avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part Object.extend()
Je crée deux classes "DataWriter" qui hérite de "FirstClass".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <script type='text/javascript' > var FirstClass = Class.create(); FirstClass.prototype = { initialize: function () { this.data = "Hello World"; alert("constructeur appeler"); }, message1: function () { alert("message1"); } }; var DataWriter = Class.create(); DataWriter.prototype = { message2: function () { alert("message1"); } }; Object.extend(DataWriter, FirstClass); </script> <script type='text/javascript'> var temp2 = new DataWriter(); temp.message1(); temp.message2(); </script>
Voila ce qu'il ce passe :
- temp.message1(); --> appelle le constructeur de "FirstClass" et affiche alert("constructeur appeler");
- temp.message1(); --> alert("message1"); (la derivation a l'air de marcher)
- temp.message2(); --> erreur JavaScript (FireFox : "temp2.message2 is not a function"/ IE :"this.initialize a la valeur Null ou n'est pas un objet.")
Pourquoi cette erreur ? La derivation ne marche pas ?
Ta pas oublier d'inclure l'API prototype.js par hasard ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <script type='text/javascript' src="prototype.js"></script>
( sa m'etonnerai mais bon ^^ )
Blague à part, la syntaxe à utiliser est celle-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var DataWriter = Class.create(); Object.extend(DataWriter, FirstClass); DataWriter.prototype.message2 =function () { alert("message2"); }
roro06 MERCI BEAUCOUP !
sa marche au poil !
L'explication, tout de même :
avec
DataWriter.prototype = {...
Tu ecrase ce que tu as créé juste avant avec Object.extend
Alors qu'avec DataWriter.prototype.message2=function() ...
Tu rajoute une méthode à ton objet
(Penses au tag resolu, pour les copains ...)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager