我正在制作一个 Android 版本的 CandyBox2(我知道有些已经存在,但我真的想制作一个更好的)。 要另存为文本,您需要调用此函数:
Save.prototype.clickedFileSave();
如果我从 Save var 执行它,它就可以工作,我需要从 URL 调用它。 我试过这个:
javascript:Save.prototype.clickedFileSave();
或者这个:
javascript:Save.prototype.clickedFileSave.call();
甚至是这样:
window[Save.prototype.clickedFileSave]);
最后一个根本不起作用,因为它是一个函数而不是方法,但其他两个返回这个:
TypeError: this.getGame(...) is undefined
如果您对如何解决这个问题有任何想法,我很想知道。 谢谢!
这是保存并放置变量(通过pastebin,它很大):
最佳答案
这是一个根本性的误解。
定义为 Save.prototype.clickedFileSave
的方法是类/对象 Save
的一部分,可以在 Save
的实例上调用>:
var game = new Game(...);
var save = new Save(game);
save.clickedFileSave();
除非将 Save
的实例传递给它,否则无法直接通过原型(prototype)调用它:
Save.prototype.clickedFileSave.apply(save);
您收到的错误意味着 .getGame(...)
也是 Save 的一种方法,定义为 Save.prototype.getGame
,并在 clickedFileSave
中使用 this.getGame(...)
进行引用。换句话说,当调用此类方法时,this
必须引用Save
的实例。
关于javascript - 调用函数时,返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965068/