Создайте класс 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 (круглые скобки в конце объявления класса).