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()

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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.