Vediamo due esempi in cui cercherò di spiegare cosa voglio capire.Creare una classe JS: IIFE vs prototipo di ritorno
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();
E:
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();
Vediamo !, Entrambi classe vengono creati come espressione di una funzione ed entrambi funzionano ugualmente. Le uniche differenze tra di loro sono: Il primo restituisce la funzione Auto con la sua proprietà prototipo. Il secondo funziona restituendo la funzione Car, evitando la proprietà prototype e utilizzando invece IIFE.
Quali sono le differenze tra l'uso return Car.prototype;
ed evitare IIFE e utilizzare return Car;
utilizzando IIFE (parentesi alla fine della dichiarazione di classe).
Che cosa stai cercando di raggiungere? – alex
Sto cercando di capire la teoria di come funziona in profondità e quali sono le differenze tecniche. –
Avete intenzione di utilizzare l'operatore 'new' con entrambi gli oggetti' Car' restituiti? – alex