Mon collègue a utilisé "new function ()" avec un "f" minuscule pour définir de nouveaux objets en JavaScript. Il semble bien fonctionner dans tous les principaux navigateurs et il semble également être assez efficace pour masquer les variables privées. Voici un exemple:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
Dès que "this" est utilisé, il devient une propriété publique de someObj. Donc someObj.foo, someObj.get_inner () et someObj.set_inner () sont tous disponibles publiquement. De plus, set_inner () et get_inner () sont des méthodes privilégiées, elles ont donc accès à "interne" grâce aux fermetures.
Cependant, je n'ai vu aucune référence à cette technique nulle part. Même JSLint de Douglas Crockford s'en plaint:
- construction étrange. Supprimer «nouveau»
Nous utilisons cette technique en production et elle semble bien fonctionner, mais je suis un peu inquiète à ce sujet car elle n'est documentée nulle part. Est-ce que quelqu'un sait si c'est une technique valide?
this
se référera à l'élément qui a déclenché l'événement, pas à votre objet, mais vous pourriez simplement l'avoir à lavar instance = this
place.