Создать класс с 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 или есть другой способ?

Ответы на вопрос(3)

Ваш ответ на вопрос