Eu tenho usado o JS para escrever métodos de objetos auto-justificados. Encontrei um problema, que é definir um método, como segue:
A cópia do código é a seguinte:
Função ListCommon2 (primeiro, segundo, terceiro)
{
this.first = function ()
{
alerta ("primeiro do"+primeiro);
}
}
ListCommon2.do1 = função (primeiro)
{
// this.first ();
alerta ("primeiro do"+primeiro);
}
ListCommon2.prototype.do2 = função (primeiro)
{
// this.first ();
alerta ("primeiro do"+primeiro);
}
Qual é a diferença entre os dois métodos? Qual é a função de usar protótipo ou não?
Código de teste:
A cópia do código é a seguinte:
var t1 = novo listCommon2 ("ferver a água 1", "Brew Tea 1", "Drink 1");
// t1.do1 (); // ocorreu um erro quando a chamada
ListCommon2.do1 ("água fervida 1");
var t2 = novo listCommon2 ("ferver a água 2", "Compre chá 2", "bebida 2");
t2.do2 ("água fervente 2"); //
// listCommon2.do2 ("água fervente 1"); // ocorreu um erro na chamada
Após o teste, verificou -se que o método que não usava protótipo é equivalente ao método estático da classe, para que possa ser chamado dessa maneira, listCommon2.do1 ("água fervente 1");, se for chamado dessa maneira, ocorrerá um erro, t1.do1 ();
Pelo contrário, o método usando protótipo é equivalente ao método da instância da classe e não pode ser usado após o novo. ListCommon2.do2 ("ferver água 1"); Isso causará um erro.
Conclusão: O método definido usando o protótipo é equivalente ao método da instância de uma classe e deve ser usado após o novo. As limitações da função que podem ser chamadas na função também serão semelhantes às limitações do método da instância de uma classe.
O uso de métodos definidos sem o uso do protótipo é equivalente a métodos estáticos da classe. Você pode usá -los diretamente sem novos. As restrições de funções que podem ser chamadas nas funções também serão semelhantes às limitações dos métodos estáticos da classe.
Por exemplo, este.First () não pode ser chamado;