J'essaie d'utiliser l'héritage prototype en Javascript. Le problème avec mon code ci-dessous est que lorsque le bouton est cliqué et MyNamespace.MyObj.myEventHandler
est appelé, la valeur de this
n'est pas l'instance de MyNamespace.MyObj
, mais est plutôt le bouton qui a été cliqué. Suis-je structurer les choses mal (existe-t-il un meilleur moyen)? Puis-je en quelque sorte m'assurer que this
est l'instance de l'objet plutôt que le bouton appelant?La valeur de 'this' à l'intérieur d'une fonction prototype Javascript utilisée comme gestionnaire d'événements
var MyNamespace.MyObj = function(myform) {
this.myform = myform;
jQuery('.mybutton', this.myform).click(this.myEventHandler);
};
MyNamespace.MyObj.prototype = {
myEventHandler: function() {
this.myform.get(0).submit();
}
};
jQuery(document).ready(function() {
new MyNamespace.MyObj(jQuery('#myform'));
});
Ceci est juste un exemple très abrupt que j'utilise pour apprendre l'héritage de prototype. Je me rends compte que la fonction réelle du code ci-dessus pourrait être faite simplement dans jQuery ou que je pourrais utiliser un objet littéral ou le modèle Module - mais je suis vraiment intéressé par apprendre l'héritage du prototype plutôt que d'implémenter une fonction spécifique .
Excellent - cela fonctionne. Est-ce un modèle commun à suivre ou peut/mon code doit-il être structuré de telle sorte que ce n'est pas nécessaire, tout en obtenant les mêmes résultats? –
@RenderIn: Oui, je pense que c'est le modèle couramment utilisé, bien qu'il existe [d'autres moyens] (http://stackoverflow.com/questions/2025789/preserving-a-reference-to-this-in-javascript-prototype-functions) ... – CMS
Le proxy est probablement le chemin à parcourir: http://api.jquery.com/jQuery.proxy/ –