我正在做一个小网站,我需要使用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>
所以,当我点击提交按钮时,它会运行该功能,但确实如此。但是,每当我刷新页面或打开它时,它总是会加载。这是为什么?
答案 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");
};