我有一個包含多個方法和屬性的類。其中的一個方法,嵌入了作爲這樣的的setTimeout()函數:引用正確的'this'而無需重新聲明'this'內嵌功能
function myClass() {
this.some_property = "test";
this.PrintOnTimeout = function() {
// I can do var.self = this;
// but I can't help but feel like that would be inefficient
setTimeout(function timeoutPrint() {
// I want to reference this.some_property here.
// Currently this.some_property returns an error as
// this refers to PrintOnTimeout() rather than myClass().
});
}
}
道歉提前如果在計算器上有一個答案了。我環顧四周,但幾乎找到了關於擴展類和super()的所有討論。也許超級()是這裏的答案,我不理解它?我會使用全局,但我更願意將這個類的每個實例視爲可能未識別的。所以如果有一個this.GetMainParent或其他東西...否則,我很欣賞這個優點。
編輯1:目標不是傳遞'this',這是顯而易見的,而是從一組嵌套內的任何位置引用主塊(或任何特定塊,如果設置爲這樣)功能。
編輯2:箭頭功能是我需要,如圖ASDFGerte該溶液中。
*如果在StackOverflow上有答案,請事先道歉。*有。其實很多。 :-) – 2016-08-17 05:55:51
我不確定你評論的目標是什麼。我之後立即解釋說我不確定如何查看它,所有我能找到的東西都是關於類擴展和super()的。事實上,這個問題被標記爲另一個問題的重複,當這個問題被標記爲是相同的,並沒有相同的解決方案。我不是想通過'this',我試圖從函數內部的任何地方(或嵌套函數(或嵌套函數))引用主塊。箭頭功能就是這裏的解決方案。 – Daniel
[箭功能(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)在JS,提前的_could_如何做這個論點,都是一模一樣的創建這個目的。多次有效地聲明相同的值是很浪費的。箭頭函數FTW。 – Daniel