Javascript原型函数总是加载

时间:2014-12-27 17:30:17

标签: javascript html

我正在做一个小网站,我需要使用javascript。我对原型的功能有问题。我正在测试一些东西,我意识到每当我加载我的页面时,我的函数的原型总是执行。我有这个代码:

    function Clinica ()
{
 var id = 0;
 var doentes = [];


}

Clinica.prototype.criarDoente = new function ()
{
        alert("HELLO");
}

警报仅供测试。现在我有这个HTML:

<form id ="criarDoenteForm" onsubmit = javascript: "criarDoente();" >

<label> Número: </label>
<label id ="numero"> </label>
</br>

<label> Nome: </label>
<input type="text" size="20" />
</br>

<label> Sexo: </label>
<input id="masculino" name="sexo" type="radio" value="m" />
<label for="masculino" class="valores">Masculino </label>


<input id="feminino" name="sexo" type="radio" value="m" />
<label for="feminino" class="valores"> Feminino </label>
</br>

<label> Data de Nascimento: </label>
<input type="text" size="10" />
</br>

<input  type="submit" value="Criar" />
<input  type="submit" value="Cancelar" />


</form>

所以,当我点击提交按钮时,它会运行该功能,但确实如此。但是,每当我刷新页面或打开它时,它总是会加载。这是为什么?

1 个答案:

答案 0 :(得分:1)

正如丹尼尔·A·怀特所指出的,new就是问题所在。

当你在函数之前放置new时,它将执行该函数,将其用作新对象的构造函数。即使没有任何括号来调用该函数,也会发生这种情况。

你在这做什么:

Clinica.prototype.criarDoente = new function ()
{
        alert("HELLO");
}

具有与以下相同的效果:

var f = function ()
{
        alert("HELLO");
};
Clinica.prototype.criarDoente = new f; // <-- this will execute the function
                                       //     even without parentheses

所以只需删除new

Clinica.prototype.criarDoente = function ()
{
        alert("HELLO");
};