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 :
- function A() {
- this.f = function() {
- alert('appel de la fonction f de la classe A');
- this.z();
- }
- this.z = function() {
- alert('appel de la fonction z de la classe A');
- }
- }
- function B() {
- this.g = function() {
- alert('appel de la fonction g de la classe B');
- this.z();
- }
- this.z = function() {
- alert('appel de la fonction z de la classe B');
- }
- }
- 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 :
- function A() {
- this.f = function() {
- alert('appel de la fonction f de la classe A');
- this.z();
- }
- this.z = function() {
- alert('appel de la fonction z de la classe A');
- }
- }
|
et le fichier B.js contenant :
Code :
- document.write("<script type='text/javascript' src='./A.js'></script>" );
- function B() {
- this.g = function() {
- alert('appel de la fonction g de la classe B');
- this.z();
- }
- this.z = function() {
- alert('appel de la fonction z de la classe B');
- }
- }
- 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