讓我們來看看兩個例子,我將嘗試解釋我想要理解的內容。創建一個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函數及其原型屬性。 第二個工作返回Car函數,避免了原型屬性,而是使用IIFE。
使用return Car.prototype;
和避免使用IIFE和使用return Car;
使用IIFE(在類聲明結尾的括號)之間有什麼區別。
究竟是什麼你想實現什麼? – alex
我試圖理解它如何深入工作的理論,以及技術上的差異。 –
您是否打算在兩個'Car'對象返回時使用'new'運算符? – alex