Создайте класс JS: IIFE против прототипа возврата

Позволять'см два примера, в которых яПопробую объяснить, что я хочу понять.

var Car = function(){
  // Init class
  function Car() { };
  // Private func/vars
  var private = { color:'red' };
  // Public func/vars
  Car.prototype = {
    newColor: function(color) { private.color = color },
    getColor: function() { return private.color }
  };

  return Car.prototype; // return with prototype
};

var myCar = new Car();

А также:

var Car = (function(){
  // Init class
  function Car() { };
  // Private func/vars
  var private = { color:'red' };
  // Public func/vars
  Car.prototype = {
    newColor: function(color) { private.color = color },
    getColor: function() { return private.color }
  };

  return Car; // avoid prototype adding parentheses on next line;
})();

var myCar = new Car();

Позволять's see !, Оба класса созданы как выражение функции, и оба работают одинаково. Единственные различия между ними следующие: первая возвращает функцию Car со свойством прототипа. Второй работает, возвращая функцию Car, избегая свойства prototype и вместо этого использует IIFE.

Какие'S различия между использованиемreturn Car.prototype; и избежать IIFE и использоватьreturn Car; используя IIFE (круглые скобки в конце объявления класса).

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

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