Es gibt keinen Grund für die spezifische Konstruktion, die Sie hier zeigen. Der Grund, eine IIFE in dieser Art von Konstrukt zu verwenden ist, wenn Sie statische Daten haben, die Sie erklären müssen, will Ihr Objekt zur Verfügung stehen, aber wollen sie nicht öffentlich zugänglich oder stören den globalen Namensraum sein oder Instanz sein Daten.
Da der Code, den Sie zeigt nicht irgendwelche von denen zeigen, ist es nicht wirklich bietet einen Vorteil, wie Sie gezeigt haben. Aber wenn außerhalb des Objekts andere Variablen deklariert würden, aber innerhalb des IIFE, würde das IIFE sie schützen und einschließen und sie von der Außenwelt isolieren.
Zum Beispiel, wenn Sie dies hatte:
Visualizer = (function() {
var counter = 0;
function Visualizer() {
counter++;
...
}
Visualizer.prototype.getCount = function() { return counter; }
...
return Visualizer;
})();
var viz = new Visualizer();
Dann würde die IIFE sein, eine variable counter
umschließt, die allen Methoden aller Instanzen von Visualizer zur Verfügung stehen würde, aber von der Außenwelt isoliert und die IIFE würde einen potenziellen Nutzen bieten.
Nun, in diesem speziellen Fall ist es nicht viel Nutzen, aber was ist, wenn Sie einige Hilfsfunktionen benötigen? Dann ist es nützlich, weil Sie sie privat halten und nicht zum globalen Geltungsbereich gelangen. – elclanrs
als in die Wrapper die Hilfsfunktionen, aber nicht die Funktion? Was ist der Unterschied zwischen den Funktionen? – natecraft1
Wenn Sie das tun, würden Sie jedes Mal, wenn Sie 'new' aufrufen, die Hilfsfunktionen erstellen. – elclanrs