Je mets mon code d'une manière simple, mais si une bonne âme veut aider le code est |on Github| /lib/inmotion/editor.js(line 99)Pourquoi ce JavaScript OO est-il faux?
editor.js
function Editor(){
var instance = this;
this.key_frames = [] // a list of key frames
this.kf = null // the current KeyFrame
function notice_click(click){
instance.kf.add_bone(1) // <-- error here
// instance.kf.list.push(1) // <-- this works, but is incomplete
}
}
key_frame.js
function KeyFrame(){
instance = this
instance.changed = false // for the redraw :)
instance.list = []
function add_bone(bone){
instance.list.push(bone)
instance.changed = true
return true
}
}
Mon programme a une instance de l'éditeur unique qui a beaucoup de cas de KeyFrames.
Chaque KeyFrame contient beaucoup d'os.
Donc il y a toujours un KeyFrame actif, défini par l'instance de Editor.kf
Comme je n'ai qu'un seul kf, je peux ajouter des os à celui-là sans problème, mais comme j'ajoute plus de KeyFrames je ne peux ajouter que add_bone au dernier kf j'ai créé! Pourquoi?
Si je n'étais pas assez clair, je présente mes excuses, demander le doute
Tout d'abord, ** utiliser des points-virgules **, oui ils sont parfois optionnels ... quand vous y arrivez, il n'y a pas d'excuse légitime pour * ne * pas les utiliser, les utiliser, être explicite. Deuxièmement, 'instance = this' définit une variable * globale * nommée' instance', vous avez besoin de 'var instance = this;' pour qu'elle soit locale. –
@Nick Craver: Oui, précisément, ne veux-tu pas en faire une réponse pour que je puisse choisir comme accepté? –