Создать класс с IIFE, который не является ссылкой?
Я новичок в JavaScript, и я пытаюсь сосредоточиться на создании "классов" с частными данными и общедоступными функциями. Мне сказали, что выражения «Немедленно вызванные функции» (IIFE) достигают этого, но когда я «создаю» новые объекты из класса, они ссылаются на личные данные, а не хранят свои собственные.
Часть этого заимствована изСоздайте класс JS: IIFE против прототипа возврата
Например, простой автомобиль "класса":
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();
Цвет car2 также меняется на фиолетовый.
car1.newColor('purple');
car2.getColor(); // 'purple'
Я хочу, чтобы каждый объект класса Car содержал свои личные данные. Как это можно сделать с помощью IFFE или есть другой способ?