Je ne sais pas ce que je fais mal ici, je veux juste être en mesure d'avoir des fonctions d'un objet de référence du champ d'objetJavaScript - Invoquer méthodes qui font référence à ce
myscipt.js
function MyFoo() {
this.name = 'myname';
}
function MyBar() {
this.myFoo = new MyFoo();
function setMyFoosName(name) {
this.myFoo.name = name;
}
}
somepage.html
<scipt>
$('document').ready(function() {
$.myBar = new MyBar();
}
...
some action
...
$.myBar.setMyFoosName('new name');
</script>
cela jette une exception:
this.myFoo.name = name; this.myFoo is not defined
Si 'myFoo' ne doit stocker qu'une référence à' MyFoo', il est préférable de le rendre privé. Vois ma réponse. – Lekensteyn
En fait, @Ken aussi bien, j'étais sur le point de commenter dans sa réponse, mais il a été supprimé.Tout dépend de la façon dont vous appelez la fonction 'setMyFoosName', puisqu'il s'agit d'une" méthode d'instance ", vous n'avez pas vraiment besoin de la variable' that', car la méthode s'appelle 'myBarInstance.setMyFoosName ('foo') ', et la valeur' this' à l'intérieur de la méthode se référera à l'objet de base * de la référence où il a été appelé. Cochez [cet exemple] (http://jsbin.com/uyuti3/edit) sans 'that'. – CMS
CMS: Observation intéressante. Il n'y a qu'une différence délicate (cela apparaîtra si l'on commence à jongler avec les méthodes), mais cela n'a probablement pas d'importance en pratique. Je vais préciser si quelqu'un est intéressé, mais il suffira probablement de dire que mon approche et celle qui a été supprimée par Ken fonctionneront dans ce cas. Merci CMS! – Jakob