有人可以帮我吗?Javascript:我怎样才能'宣布'一个函数而不需要调用它?
下面的代码工作,但不幸的是一个函数调用DoSomething的()是必要的:
<body onload=init()>
</body>
<script>
function Startscreen()
{
this.doSomething(); //why is this call necessary and how else to solve it?
this.startscreenhtml =
" <form onsubmit=doSomething()> " +
" <input type=text /> " +
" </form> ";
document.write(this.startscreenhtml);
}
Startscreen.prototype.doSomething = function()
{
alert(123)
}
</script>
<script>
function init()
{
var startscreen = new Startscreen();
}
</script>
我也想保持功能DoSomething的作为对象启动画面的功能。
编辑:我想使用document.write
Preferrably我要声明,我现在所做的构造之外DoSomething的保持,因为我相信,否则的话我会叫新的启动画面多次,该相同的功能被创建多次。
但是,我尝试了很多事情,使得这个工作没有调用doSomething,包括声明构造函数内的函数,但没有任何工作。 我的猜测是,调用是必要的,使功能已知,因为如果代码是自上而下读取,我即时分配给'onsubmit'之前我宣布它。
有人知道如何解决这个问题吗?
非常感谢这个解决方案,虽然它并不像您说的那样理想,我不想事先知道我会做什么变数名称。然而,起初你说我的doSomething函数在我提交表单时不会被调用......但它会是......?只是在创建表单时(这是我想摆脱的副作用)。希望你会回复,并感谢评论 – Jeroen
顺便说一句,我得到你的解释关于没有一个(引用一个)实例留在当事件处理程序做它的事情,但仍然代码工作(我测试它在铬)。所以也许最初的呼叫(我想要一个不同的解决方案)使得这个实例在全局范围内已知 - 明确地说 - 或者将函数提升到全局水平..或者我不知道我只是在猜测,但它仍然有效......在我的原始文章中的代码,doSomething将被调用时,我提交 – Jeroen
@Jeroen:我不明白'onsubmit'事件可能如何调用该方法。调用方法不注册是全局范围内的一项功能。你必须在页面中的某处添加更多的代码才能实现。无论如何,我在如何从没有全局变量的事件处理程序中获取方法的问题上增加了一些更多内容。 – Guffa