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?