Diferença fundamental entre fn () e o novo fn () em javascript

12

Em que todos os aspectos, chamar uma função com e sem nova palavra-chave difere em javascript? Quero dizer, com o que todas as coisas estão diferindo?

testFn() vs new testFn()

akp
fonte

Respostas:

13

newcria um objeto novo (vazio) e conjuntos thispara ele, em seguida, chama a função, que atua como o construtor para o objeto (através da manipulação this. algo ). Chamar a mesma função sem a newpalavra - chave permitiria agir de acordo com o que thisatualmente significa.

user281377
fonte
Existe algo mais nisso?
AKP
@akp não, é realmente assim tão simples. Exceto o que não foi mencionado, é que, se a função retornar explicitamente um tipo de referência, ela será retornada newe o objeto criado será desperdiçado.
Esailija 25/03
2
O uso newfará com que o protótipo do novo objeto seja configurado para referenciar o da primeira função para a qual o novo objeto é passado. Não acho que o comportamento possa ser legitimamente alcançado por outros meios.
Supercat
Você está certo, eu senti falta disso.
precisa saber é o seguinte
1

Essas variantes são sintaticamente diferentes: com a "nova" variante supõe que a função seja um construtor. A variante sem "novos" supõe, que é não um construtor.

Gangnus
fonte