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.