1
有沒有使用這種模式的任何缺點?在IIFE包裹構造和原型方法的任何缺點?
var Animal = (function() {
function Animal(name) {
this.name = name;
}
Animal.prototype.move = function(meters) {
return alert(this.name + (" moved " + meters + "m."));
};
return Animal;
})();
我認爲這是很好的可讀性封裝在立即調用函數表達式的一切,我知道這是什麼CoffeeScript中的類編譯成。
在您的特定示例中,沒有任何結果,因爲使用IIFE創建的私有範圍從未被利用。 – levi
這是一個很好的方法。非常靈活,允許私人功能和原型。另外,你不要將實現分散在整個文件中,一切都在IIEF中。 – dfsq
唯一的缺點是如果你在IIFE中有非常大的變量,它就不會超出範圍,除非你刪除它們或者將它們設置爲像undefined那樣耗費較少的東西。對於延遲加載的功能,您可以隨時添加到原型,但這些方法將無法訪問共享私有。 – HMR