基本上,我有一个对象:
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,将一个点击处理程序附加到它,然后将它装订到某个东西上。在实例化时,传递了两个参数:名称和所有者。所有者是对另一个对象的引用。
这段代码有两个问题:
- squish 函数中的 this 引用被破坏,因为它现在引用了单击的元素。
- 由于链接,当实际附加事件时,“this”指的是 jQuery 或新创建的 div 元素(还不确定哪个),所以 this.squish 是未定义的并且从未调用过。
如果它有任何帮助,则所有者对象具有对所有西红柿的引用。