私は頻繁にこのようなコードがあります:javascriptエンクロージャ内の「this」にアクセスするには、どのような方法が適していますか?
function Object() {
}
Object.prototype.getData() {
// THIS LINE:
var object = this;
$.ajax({
url: '...'
, success: function(data) {
object.onLoadData(data);
}
})
}
var o = new Object();
o.getData();
私の質問:上記の「VARオブジェクト=この」ビットのための好適なパラダイムは何を?私はこれを見た:
var self = this;
これは良く見えますが、私はおそらくこの方法を盗もうとします。匿名関数から親オブジェクトを参照する最も一般的な方法は何ですか?これを行うためのより洗練された方法がありますか?私はしばしば、 "var object = this;"ほとんどのオブジェクトメソッドの一番上にあります。これを避けるためのトリッキーな方法があるようです。
ありがとうございます!
'Object.prototype'を実際に*拡張しているとは思っていませんが、問題のコンストラクタ名として' Object'を使用しただけです。 – user113716
うわー、素晴らしい答え!私はjQueryのコンテキストがまさに私が望むものだと思う(私が以前にそれを見たことがない理由を知らない)。また、.bind()は面白いです。私はcompatコードを使用して、それを使い始めるかもしれません。残念ながら私はIE7についても心配する必要があります。 – rocketmonkeys
@Rocketmonkeys:私が手伝ってくれてうれしい。 :) – user113716