Lassen Sie uns zwei Beispiele sehen, in denen ich versuchen werde zu erklären, was ich verstehen will.Erstellen Sie eine JS-Klasse: IIFE vs Return-Prototyp
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();
Und:
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();
Mal sehen !, Beiden Klassen werden als Funktionsausdruck erstellt und beide gleichermaßen funktionieren. Die einzigen Unterschiede zwischen ihnen sind: Die erste Rückgabe der Auto-Funktion mit seiner Prototyp-Eigenschaft. Das zweite funktioniert, die Auto-Funktion zurückgebend, die Prototypeigenschaft vermeidend und stattdessen IIFE verwendend.
Was sind die Unterschiede zwischen der Verwendung return Car.prototype;
und vermeiden IIFE und Verwendung return Car;
mit IIFE (Klammern am Ende der Klassendeklaration).
Was genau wollen Sie erreichen? – alex
Ich versuche die Theorie zu verstehen, wie es in der Tiefe funktioniert und welche technischen Unterschiede es gibt. –
Haben Sie vor, den 'neuen' Operator mit beiden zurückgegebenen' Car'-Objekten zu verwenden? – alex