[Javascript] héritage entre classe dans des fichiers différents

héritage entre classe dans des fichiers différents [Javascript] - HTML/CSS - Programmation

Marsh Posté le 28-03-2008 à 09:18:03    

Bonjour,
   
   Je suis en train de travailler sur un projet dans lequel je cherche a faire de la programmation objet avec javascript. Et j'avoue que j'ai quelques petit soucis avec l'héritage entre "classes".
 
Voila mon problème :  
si je fait un seul fichier Test.js et que je met ça

Code :
  1. function A() {
  2.    this.f = function() {
  3.       alert('appel de la fonction f de la classe A');
  4.       this.z();
  5.    }
  6.    this.z = function() {
  7.       alert('appel de la fonction z de la classe A');
  8.    }
  9. }
  10. function B() {
  11.    this.g = function() {
  12.       alert('appel de la fonction g de la classe B');
  13.       this.z();
  14.    }
  15.    this.z = function() {
  16.       alert('appel de la fonction z de la classe B');
  17.    }
  18. }
  19. B.prototype = new A;


 
dans ce cas là, pas de problème : f est bien définie pour B et son appel appelle bien z de B. le linkage dynamique a bien lieu.
 
Par contre, comme je vais avoir plein de classes je vais pas tout mettre dans le même fichier (on va éviter de faire du code de goret). Donc je voulais mettre chacune de mes classes dans des fichiers différents.
 
je fais donc le fichier A.js contenant :
 

Code :
  1. function A() {
  2.    this.f = function() {
  3.       alert('appel de la fonction f de la classe A');
  4.       this.z();
  5.    }
  6.    this.z = function() {
  7.       alert('appel de la fonction z de la classe A');
  8.    }
  9. }


 
et le fichier B.js contenant :
 

Code :
  1. document.write("<script type='text/javascript' src='./A.js'></script>" );
  2. function B() {
  3.    this.g = function() {
  4.       alert('appel de la fonction g de la classe B');
  5.       this.z();
  6.    }
  7.    this.z = function() {
  8.       alert('appel de la fonction z de la classe B');
  9.    }
  10. }
  11. B.prototype = new A;


 
et là, il ne reconnais plus A : il me met dans le fichier B : "A is not defined". Donc du coup, j'ai plus d'héritage et la fonction f n'existe plus pour B...
Ce qui me laisse perplexe c'est que si je cherche a utiliser A au sein de B, genre si dans g j'instancie A, il 'y a pas de problème : la classe A est bien reconnue...
 
Est ce que vous voyez où se trouve mon erreur ?
Merci pour votre aide :)

Reply

Marsh Posté le 28-03-2008 à 09:18:03   

Reply

Marsh Posté le 28-03-2008 à 09:41:07    

N'utilise pas de document.write, mais un bon vieux <script> ?
 
(d'ailleurs faut éviter le document.write, utilise plutôt du DOM ou la propriété innerHTLML d'un élément)

Reply

Marsh Posté le 28-03-2008 à 10:00:22    

Ok, merci pour l'information :) Je me suis mis que très récemment à Javascript donc merci de me prévenir de ce principe.
 
Mais par contre j'ai toujours le même problème : même avec la simple utilisation des balises <script> il me sort toujours la même erreur...  
 
Mais juste pour m'assurer : le principe est bon non ? Vous avez déjà utilisé des relation d'héritage entre des classes se trouvant dans des fichiers différents ?
 
Merci de votre aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed