Fondamentalement, j'ai un objet:jQuery OO événement contraignant
function tomatoe(name, owner) {
$('<div>').click(this.squish).appendTo(myElement).text('I\'m a happy tomatoe called ' + name);
this.name = name;
this.dead = false;
this.owner = owner;
this.squish = function() {
console.log('Oh my Google, you killed ' + this.name + '!');
this.dead = true;
this.owner.sad = true;
};
}
La fonctionnalité est assez simple. Une fois instanciée, créez une div, attachez-y un gestionnaire de clic et agrafez-la sur quelque chose. À l'instanciation, deux paramètres sont passés: un nom et un propriétaire. Le propriétaire est une référence à un autre objet.
Il y a deux problèmes avec ce code:
- La cette référence dans la fonction Ecraser est brisé, car il se réfère maintenant à l'élément cliqué.
- En raison du chaînage, lors de la connexion de l'événement, "this" fait référence à jQuery ou à l'élément div nouvellement créé (pas encore sûr), donc ce.squish n'est pas défini et n'est jamais appelé.
Si cela aide d'une manière quelconque, l'objet propriétaire a une référence à toutes les tomates.
* facepalm * Je suis comme un idiot ... créer une autre instance de vous-même est en OO JavaScript 101 – Zirak
Toutes vos réponses sont correctes ... va laisser un générateur de nombres aléatoires décider lequel. – Zirak
lol @ Zirak est habituellement le 1er correct qui obtient le gâteau :-p – Neal