我一次又一次遇到的問題之一是對指針變化的參考this
。以下面的例子。我想創建一個Server對象,並將相機的分辨率存儲爲屬性。這是不可能的,因爲this.resolution
適用於相機回調對象中的屬性而不是服務器對象。解決方案「this」引用更改內部回調?
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
調用自己的方法。
解決此問題的最佳途徑是什麼?如果我的問題含糊不清,請要求澄清。
爲什麼你需要將'this'傳入回調函數?如果你在外部範圍聲明'self',你仍然可以在回調中引用它。你也可以使用'bind'來創建一個特定接收者的回調。 – pdoherty926 2013-03-10 00:23:14
@ethagnawl我需要將'this'傳入回調函數,因爲上面的代碼是異步運行的。對不起,離開了。 – gluxon 2013-03-10 00:26:58
沒錯,我可以在'getImageResolution'中訪問'self',但是我怎樣才能將'self'的值放回'this'? – gluxon 2013-03-10 00:34:52