Давайте рассмотрим два примера, в которых я попытаюсь объяснить, что я хочу понять.Создайте класс 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();
Давайте посмотрим !, Оба класса создаются как выражение функции, и оба работают одинаково. Единственные различия между ними: Первый возврат функции Авто с его прототипом. Вторая работа, возвращающая функцию Car, избегая свойства прототипа и вместо этого использует IIFE.
В чем разница между использованием return Car.prototype;
и предотвращением IIFE и использованием return Car;
с использованием IIFE (круглые скобки в конце декларации класса).
Что именно вы пытаетесь достичь? – alex
Я пытаюсь понять теорию, как она работает в глубине, и каковы технические отличия. –
Вы собираетесь использовать оператор 'new' с возвращенными объектами' Car'? – alex