Utwórz klasę z IIFE, która nie jest referencją?

Jestem nowym użytkownikiem JavaScript i staram się ominąć tworzenie „klas” z prywatnymi danymi i funkcjami publicznymi. Powiedziano mi, że natychmiastowe wywołanie funkcji (IIFE) osiąga to, ale kiedy „tworzę instancje” nowych obiektów z klasy, odwołują się do danych prywatnych, a nie do własnych.

Część z tego jest pożyczonaUtwórz prototyp klasy JS: IIFE vs powrót

Na przykład prosta „klasa” samochodów:

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();

kolor car2 również zmienia się na fioletowy.

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

Chcę, aby każdy obiekt klasy Car posiadał własne prywatne dane. Jak można to osiągnąć za pomocą IFFE, czy jest inny sposób?

questionAnswers(3)

yourAnswerToTheQuestion