次のようなものがあると仮定します。
var MyApp = function() {
this.name = "Stacy"
}
MyApp.prototype.updateName = function(newname) {
this.name = newname;
}
私のメインページには次のものがあります:
$(function () {
var instance = new MyApp();
})
名前を更新するボタン イベント ハンドラがあります。
$("#button").on("click", function(evt) {
// Update the name in MyApp to something else...
instance.name = "john" // I do not like using instance here, because it has to be "instance" has to be created before I can use it. I want to be able to make this independent of "instance" being created or not
});
ボタンのクリック ハンドラーの一部として myapp の作成された「インスタンス」を明示的に使用せずに、ボタン ハンドラーが「MyApp」を正しい名前に更新するようにする適切な方法は何ですか?
理想的には、そのjqueryイベントハンドラーを「MyApp」のどこかに押し込んで、次のようなことができるようにしたいと思います:
MyApp.prototype.events = function() {
$("#button").on("click", function(evt) {
this.name = "john"
});
}
これは何か他のものを参照しているため、機能しませんが。
イベントハンドラーが多かれ少なかれ「MyApp」のプロパティを更新して、作成された「インスタンス」から独立できるようにアプリケーションを適切に構成するにはどうすればよいですか (つまり、「インスタンス」を使用する必要がなくなります)。