Mein Kollege hat "new function ()" mit einem Kleinbuchstaben "f" verwendet, um neue Objekte in JavaScript zu definieren. Es scheint in allen gängigen Browsern gut zu funktionieren und es scheint auch ziemlich effektiv zu sein, private Variablen zu verbergen. Hier ist ein Beispiel:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
Sobald "this" verwendet wird, wird es ein öffentliches Eigentum von someObj. SomeObj.foo, someObj.get_inner () und someObj.set_inner () sind also alle öffentlich verfügbar. Darüber hinaus sind set_inner () und get_inner () privilegierte Methoden, sodass sie über Closures Zugriff auf "inner" haben.
Ich habe jedoch nirgendwo einen Hinweis auf diese Technik gesehen. Sogar Douglas Crockfords JSLint beschwert sich darüber:
- seltsame Konstruktion. 'Neu' löschen
Wir verwenden diese Technik in der Produktion und sie scheint gut zu funktionieren, aber ich bin etwas besorgt darüber, weil sie nirgendwo dokumentiert ist. Weiß jemand, ob dies eine gültige Technik ist?
this
bezieht sich dies auf das Element, das das Ereignis ausgelöst hat, nicht auf Ihr Objekt, sondern auf ein Element, das Sievar instance = this
stattdessen haben könnten .