2016-01-23 166 views
1

我正在製作一個Android版本的CandyBox2(我知道一些已經存在,但我真的想做出更好的)。 要保存爲文本,你需要調用這個函數:當調用函數時,它返回undefined

Save.prototype.clickedFileSave(); 

如果我從保存VAR它的工作原理執行它,我需要從URL調用它。 我嘗試這樣做:

javascript:Save.prototype.clickedFileSave(); 

或者這樣:

javascript:Save.prototype.clickedFileSave.call(); 

甚至這樣的:

window[Save.prototype.clickedFileSave]); 

最後都因爲它是一個函數,而不是一個方法不起作用,但另外兩個返回:

TypeError: this.getGame(...) is undefined

如果你對如何解決這個問題有任何想法,我很樂意知道它。 感謝!

這裏是保存和地方VAR(通過引擎收錄,它的大):

回答

0

有一個根本性的誤解。

定義爲Save.prototype.clickedFileSave的方法是類/對象Save的一部分,並且可以對Save一個實例被稱爲:

var game = new Game(...); 
var save = new Save(game); 
save.clickedFileSave(); 

你不能直接調用它通過原型,除非你通過它的一個實例Save

Save.prototype.clickedFileSave.apply(save); 

錯誤您獲得意味着.getGame(...)保存的方法,定義爲Save.prototype.getGame,並在clickedFileSave內引用this.getGame(...)。換句話說,在調用這樣的方法時,this必須是是指Save的一個實例。