Bonjour,
Comment faire de l'heritage avec l'API Prototype ?
Merci d'avance
Version imprimable
Bonjour,
Comment faire de l'heritage avec l'API Prototype ?
Merci d'avance
Bonjour
ça se fait avecCode:Object.extend()
Je crée deux classes "DataWriter" qui hérite de "FirstClass".Code:
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 ?
Moi, j'ai surtout:?Citation:
temp is not defined
Ta pas oublier d'inclure l'API prototype.js par hasard ?Code:<script type='text/javascript' src="prototype.js"></script>
( sa m'etonnerai mais bon ^^ )
Blague à part, la syntaxe à utiliser est celle-ci :
Code:
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 !:yaisse2:
:lahola:
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 ...)