JavaScriptでクラスを定義し始めており、キーワードthis
には多くの問題があります。ここでJavaScriptで "this"を使用するための決定的な方法
は私が何をしたいの例です:あなたがコメントで見ることができるようにそれが閉鎖内使用されているので
function MyMap() {
this.map = new google.maps.Map(....);
google.maps.event.addListener(this.map, 'idle', function() {
this.mapIdle(); // PROBLEM: "this" undefined
});
this.mapIdle = function() {
google.maps.event.addListener(marker, 'click', function() {
$("button").click(function() {
$.ajax({
success: function() {
this.map.clearInfoWindows(); // PROBLEM: "this" undefined
}
});
});
});
}
}
、this
は、ここでは動作しません。でもあなたは、コールバック関数の周りdefine a callback functionに持っているところ(本気!!)
var that = this;
google.maps.event.addListener(this.map, 'idle', function() {
that.mapIdle();
});
または:
私のようなworkaroundsを使用して開始しています。
極端に醜いです。どこでも動作しません。私が与えた例のように、ネストされたラムダ関数がたくさんあるとき、私はどのようにクラス属性を使うのか分かりません。
これを行うにはどのような方法が最適ですか?
:あなたはこのようなあなたの呼び出し元のオブジェクトからイベントやAjax呼び出しと
this
ポインタからthis
ポインタの両方へのアクセス権を持っている。この方法で[完全に 'の理解この「キーワード」(http://net.tutsplus.com/tutorials/javascript-ajax/fully-understanding-the-this-keyword/)。 –また、サイドノートとして、Javascriptで何かをする "決定的な方法"を見つけることはほとんどありません。それはそのような言語ではありません。 – nrabinowitz