No JavaScript, qualquer função legal pode ser usada como um construtor de objetos, que inclui as duas funções internas no sistema e as funções definidas pelo usuário. Depois que a função é executada como um construtor, essa propriedade dentro dela se referirá à própria função.
De um modo geral, os construtores não retornam valores, eles apenas inicializam o objeto passado por este ponteiro e não retornam nada. Se uma função tiver um valor de retorno, o objeto retornado se tornará o valor da nova expressão. Do ponto de vista formal, a única diferença entre uma função sendo executada como um construtor ou uma função comum, seja o uso do novo operador.
A descrição acima realmente tem um significado mais preciso.
Se o valor de retorno de uma função for dados de um tipo de referência (matriz, objeto ou função), quando essa função executa a construção com o novo operador como construtor, o resultado da operação será substituído pelo seu valor de retorno Desta vez, o corpo do construtor está nesse valor de, é perdido e é substituído pelo objeto retornado. Por exemplo:
A cópia do código é a seguinte:
teste de função ()
{
this.a = 10;
função de retorno ()
{
retornar 1;
}
}
alerta m = novo teste ();
var n = test ();
alerta (m); // retorna o fechamento após o retorno
alerta (n); // retorna o fechamento após o retorno
O valor dos resultados em execução M e N são os mesmos, ambos são fechados retornados pela função de teste, e o objeto referenciado por este e o resultado da atribuição disso.a = 10 são todos descartados.
Se o valor de retorno de uma função for um tipo de valor, quando a função executa a construção usando o novo operador como construtor, seu valor de retorno será descartado. O resultado da nova expressão ainda é o objeto referenciado por isso.
A cópia do código é a seguinte:
function test()
{
this.a=10;
return 1;
}
alerta m = novo teste ();
var n = test ();
alerta (m) // retorna [objeto]
Alerta (n) // retorna 1.