Meu colega tem usado "new function ()" com "f" minúsculo para definir novos objetos em JavaScript. Parece funcionar bem em todos os principais navegadores e também parece ser bastante eficaz em ocultar variáveis privadas. Aqui está um exemplo:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
Assim que "this" for usado, ele se tornará propriedade pública de algumObj. Então someObj.foo, someObj.get_inner () e someObj.set_inner () estão todos disponíveis publicamente. Além disso, set_inner () e get_inner () são métodos privilegiados, então eles têm acesso a "interior" por meio de fechamentos.
No entanto, não vi nenhuma referência a essa técnica em qualquer lugar. Até o JSLint de Douglas Crockford reclama disso:
- construção estranha. Excluir 'novo'
Estamos usando essa técnica na produção e parece estar funcionando bem, mas estou um pouco ansioso com isso porque não está documentado em lugar nenhum. Alguém sabe se esta é uma técnica válida?
this
irá se referir ao elemento que disparou o evento, não ao seu objeto, mas você poderia apenas ter emvar instance = this
vez disso.