Bonjour,
J'éprouve des difficultés à passer du C# au javascript, notamment en ce qui a trait à l'instanciation. Je poste dans le forum node.js car je me dis que ce problème est peut-être plus rencontré dans le cadre d'applis 'back-end'.
Je crée 2 objets distincts à partir du mot-clef new et d'une fonction appelée Kid : deux enfants sont 'instanciés', et chacun d'entre eux saisit un ballon et le fait rebondir, plus ou moins fort. Lorsque le ballon cesse de rebondir (le temps de rebondissement étant ici lié directement à la force de l'enfant), le programme nous l'indique.
Le problème que j'ai, est qu'à un moment donné, le premier 'Kid' (ses données) semble être écrasé par le dernier 'Kid' qui a été instancié... je ne comprends pas pourquoi.
Voici la séquence de logs à laquelle je m'attend.
Voici la séquence de logs que j'obtiens.1. Mike arrived in the garden. The kid wants to play with a balloon....
2. Elia arrived in the garden. The kid wants to play with a balloon....
3. Ensure that Mike's name is Mike...
4. Ensure that Elia's name is Elia...
5. Mike just got a balloon and wrote his name on it !
6. Mike makes the balloon bouncing (force 10) !
7. Elia just got a balloon and wrote his name on it !
8. Elia makes the balloon bouncing (force 4) !
9. Elia's balloon has stopped bouncing... The name written on it is Elia.
10.Mike's balloon has stopped bouncing... The name written on it is Mike.
On dirait que l'instance 'Mike. est écrasée dès l'appel à la fonction bounce...1. Mike arrived in the garden. The kid wants to play with a balloon....
2. Elia arrived in the garden. The kid wants to play with a balloon....
3. Ensure that Mike's name is Mike...
4. Ensure that Elia's name is Elia...
5. Elia just got a balloon and wrote his name on it ! (self.kidName:Elia)
6. Elia makes the balloon bouncing (force 10) !
7. Elia just got a balloon and wrote his name on it ! (self.kidName:Elia)
8. Elia makes the balloon bouncing (force 4) !
9. Elia's balloon has stopped bouncing... The name written on it is Elia.
10.Elia's balloon has stopped bouncing... The name written on it is Elia.
Voici le détail des 3 fichiers .js que j'ai créé.
App.js (celle que j'exécute)
Kid.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 const timers = require("timers"); const Kid = require('./kid.js'); var mike = new Kid('Mike'); var elia = new Kid('Elia'); console.log(`Ensure that Mike's name is ${mike.name}...`); console.log(`Ensure that Elia's name is ${elia.name}...`); mike.bounce(10); elia.bounce(4);
Balloon.js
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 const Balloon = require('./balloon.js'); var self; function Kid(name){ self=this; this.name=name; console.log(`${this.name} arrived in the garden. The kid wants to play with a balloon....`); } Kid.prototype.bounce = function(force1To10) { var balloon = new Balloon(self.name); balloon.bounce(force1To10); balloon.on('balloonStopped',(kidnameWrittenOnIt)=>{ console.log(`${self.name}'s balloon has stopped bouncing... The name written on it is ${kidnameWrittenOnIt}.`); }); }; module.exports=Kid;
Pour exécuter:
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 const timers = require("timers"); var inherits = require('util').inherits; var EventEmitter = require('events').EventEmitter; var self; function Balloon(kidName) { self = this; this.kidName = kidName; this.bounce = function(kidsPower1To10){ console.log(`${self.kidName} makes the balloon bouncing (force ${kidsPower1To10}) !`); timers.setTimeout(() => { self.emit('balloonStopped',self.kidName); }, kidsPower1To10*1000); } console.log(`${this.kidName} just got a balloon and wrote his name on it ! (self.kidName:${this.kidName})`); } inherits(Balloon, EventEmitter); module.exports = Balloon;
Merci d'avance pour toute explication qui m'aidera à résoudre mon problème !
Code : Sélectionner tout - Visualiser dans une fenêtre à part node app.js
Partager