基本的に、私はオブジェクトを持っています:
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;
};
}
機能は非常に簡単です。インスタンス化されたら、divを作成し、それにクリックハンドラーをアタッチして、何かにホチキス止めします。インスタンス化されると、名前と所有者の2つのパラメーターが渡されます。所有者は別のオブジェクトへの参照です。
このコードには2つの問題があります。
- squish関数のこの参照は、クリックされた要素を参照しているため、壊れています。
- 連鎖しているため、実際にイベントをアタッチする場合、「this」はjQueryまたは新しく作成されたdiv要素(どちらかはまだわかりません)のいずれかを指します。したがって、this.squishは未定義であり、呼び出されることはありません。
それが何らかの形で役立つ場合、所有者オブジェクトにはすべてのトマトへの参照があります。