Mi colega ha estado usando "nueva función ()" con una "f" minúscula para definir nuevos objetos en JavaScript. Parece funcionar bien en todos los navegadores principales y también parece ser bastante eficaz para ocultar variables privadas. He aquí un ejemplo:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
Tan pronto como se utiliza "this", se convierte en propiedad pública de someObj. Así que someObj.foo, someObj.get_inner () y someObj.set_inner () están todos disponibles públicamente. Además, set_inner () y get_inner () son métodos privilegiados, por lo que tienen acceso a "inner" mediante cierres.
Sin embargo, no he visto ninguna referencia a esta técnica en ninguna parte. Incluso JSLint de Douglas Crockford se queja de ello:
- construcción extraña. Eliminar 'nuevo'
Estamos usando esta técnica en producción y parece que funciona bien, pero estoy un poco ansioso porque no está documentado en ninguna parte. ¿Alguien sabe si esta es una técnica válida?
this
se referirá al elemento que disparó el evento, no a su objeto, pero podría tener en suvar instance = this
lugar.