私が何度も遭遇している問題の1つは、this
ポインターの変更への参照です。以下の例を見てください。サーバーオブジェクトを作成し、カメラの解像度をプロパティとして保存したいと思います。this.resolution
サーバーオブジェクトではなくカメラコールバックオブジェクトのプロパティに適用されるため、これは不可能です。
function Server(options) {
this.settings = options.settings;
this.camera = options.camera;
// Grab camera resolution
this.camera.getImageResolution(function(err, data) {
this.resolution = data;
});
}
Server.prototype.start = function() {
console.log(this.resolution); // This outputs an undefined variable error
}
以前は、関数を呼び出すために一時的に名前を変更this
することでこれを回避していました。self
値を保存しているときは、これは機能しません。コールバックに渡す必要がありthis
ますが、これは明らかにできません。
さらに、独自のメソッドを呼び出すことができないためapply
、を使用できません。camera.getImageResolution
この問題を解決するための最善の方法は何ですか?私の質問が曖昧な場合は、説明を求めてください。