Construtores JavaScript

Coleção Filhos do JavaScript | Este artigo

Eu uso principalmente dois tipos de construtores: funções construtoras literais e personalizadas.

Eles podem assumir várias formas. Os que gostaria de mencionar abaixo.

Construtor Literal (dividido)

Não estou com pressa opção.

//creation separated from initialisation
var order = {};
...
order
.id = 1;
...
order
.customer = {}; //ups I did it again
order
.customer.id = 1;

Construtor Literal (em uma declaração)

Eu preciso de uma opção de pausa logo.

//creation and initialisation together
var order = {
id
: 1,
customer
: {
id
: 1
}
};

Funções de construtor personalizadas (padrão)

Opção de JavaScript da velha escola.

//Using standard function definition
//note: convention is to use capital first letter
function Order(id) {
//new keyword implicit code: var this = {};
this.id = id;
//implicit: return this;
};
...
var order = new Order(1);

Funções de construtor personalizadas (usando uma referência extra)

Escolha dos desenvolvedores extravagantes. Não me importo em usar complexidade extra (função anônima) e recursos (referência extra) sem motivo aparente.

//Using an anonymous function reference
var Order = function(id) {
//new keyword implicit code: var this = {};
this.id = id;
//implicit: return this;
};
...
var order = new Order(1);

Funções de construtor personalizadas (retornando um novo objeto)

Outro nível de frescuras quando você não gosta de usar o padrão deste objeto.

//Using a new object
var Order = function(id) {
//we ignore 'this' altogether... it's evil right?
var that = {};
that
.id = id;
return that;
};
...
var order = new Order(1);

Funções de construtor personalizadas (retornando um novo objeto abreviado)

O anterior abreviado.

//Using a new object
var Order = function(id) {
//we ignored (this) but avoided using an extra variable (that)
return {
id
: id
};
};
...
var order = new Order(1);

Referências: Padrões de JavaScript por Stoyan Stefanou.

Coleção Filhos do JavaScript | Este artigo