Eine Klasse mit IIFE erstellen, die keine Referenz ist?

Ich bin neu in JavaScript, und ich versuche, mich ganz darauf zu konzentrieren, "Klassen" mit privaten Daten und öffentlichen Funktionen zu erstellen. Mir wurde gesagt, dass sofort aufgerufene Funktionsausdrücke (IIFE) dies ausführen, aber wenn ich neue Objekte aus der Klasse "instanziiere", verweisen sie auf die privaten Daten, anstatt ihre eigenen zu behalten.

Ein Teil davon ist ausgeliehen vonErstellen Sie eine JS-Klasse: IIFE vs. Return-Prototyp

Zum Beispiel eine einfache Auto "Klasse":

var Car = (function() {

    var body = { color: 'red' };
    Car.prototype.newColor = function(color) {
            body.color = color;
        };
    Car.prototype.getColor = function() {
            return body.color;
        };

    return Car;
})();

var car1 = new Car();
var car2 = new Car();

Die Farbe von car2 ändert sich ebenfalls in lila.

car1.newColor('purple');
car2.getColor(); // 'purple'

Ich möchte, dass jedes Objekt der Car-Klasse seine eigenen privaten Daten enthält. Wie kann dies mit IFFE erreicht werden, oder gibt es einen anderen Weg?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage