我已經構建了一個標準的JavaScript模塊(模式),其中包含許多 私有方法和變量。我發現在使用$.each
後,我正在維護this
上下文以指向我的模塊。
我知道jQuery $.each
方法創建一個閉包並因此創建一個新的「上下文」,但是我確實想要繼續有this
引用該模塊。我發現使用initFruit.call()調用我的模塊的私有函數(樣本中的initFruit()
)並傳入self
副本this
(即「範圍內」),該函數爲該函數工作,但是儘快該函數調用另一個函數,上下文再次丟失。
我真的不想用.call()隨時調用我所有的私有函數,因爲我使用$.each
進一步調用堆棧,所以如何在不丟失原始上下文的情況下使用$.each
?
小提琴:https://jsfiddle.net/BloodBaz/zz11n5wp/1/
我前段時間曾遇到同樣的問題。我已經問過[一個問題](http://stackoverflow.com/questions/29983887/this-returning-either-object-or-window-inside-the-same-object),也許提供的答案可以幫助你。 –
謝謝@JeremyThille。有趣。你的例子是通過中介的'navigator.geolocation.getCurrentPosition'調用來傳遞子函數,在這個例子中我沒有這樣做。 –