JavaScript では、コールバック (AJAX 呼び出しなど) である内部関数を使用する場合、それらは独自の環境 (this
はウィンドウ オブジェクト) で実行され、記述されている場所を認識しませんthis
。そして、私はそのための2つの解決策を見てきました:
self
or :を使用(変数that
の自動ボックス化によって実行)self
var Obj = function(){
var a = 1;
var subFunc = function(){
var self = this;
$.ajax({
url: 'something.x',
success: function(data){alert(self);}
});
}
return {
subtract : subFunc
}
};
var o = new Obj();
o.substract();
- コマンドの使用
bind
: (これがどのように行われるかわかりません)
var Obj = function(){
var a = 1;
var subFunc = function(){
$.ajax({
url: 'something.x',
success: function(data){alert(this);}.bind(this)
});
}
return {
subtract : subFunc
}
};
var o = new Obj();
o.substract();
通訳者が実際に通訳を開始したときの違いは何ですか?これはパフォーマンスにどのような影響を与えますか?