Diferença entre: `function Person(){}`, `var person = Person()`, e `var person = new Person()`?
Esta pergunta é muito vaga. Nossa melhor suposição sobre a intenção dessa pergunta é que ela está perguntando sobre construtores em JavaScript. Tecnicamente falando, function Person(){}
é apenas uma declaração de função normal. A convenção é usar PascalCase para funções que se destinam a ser usadas como construtores.
var person = Person()
invoca o Person
como uma função, e não como um construtor. Invocar como tal é um erro comum se a função pretende ser usada como um construtor. Normalmente, o construtor não devolve nada. Assim, invocando o construtor como uma função normal retornará undefined
e que será atribuído à variável pretendida como a instância.
var person = new Person()
cria uma instância do objeto Person
usando o operador new
, que herda de Person.prototype
. Uma alternativa seria usar Object.create
, tais como: Object.create(Person.prototype)
.