Вероятно, простой вопрос, надеюсь, не дублировать даже немного похожий , как этот , но есть ли какое-либо правило, как правильно написать IIFEs для любого браузера, node.js и т. Д.
Примеры IIFE - второй мой, созданный во время экспериментов в IE после просмотра, вероятно, всех связанных видео Pluralsight.
Есть ли какое-либо правило, передовой опыт или спецификация, как правильно писать методы в IIFE?
В 1-м (довольно распространенном) примере просачивается все, кроме конструктора
Во 2-м нет, но не уверен, почему или где найти характеристики этого поведения .
Вероятно, существуют различия между классическими функциями и их анонимными версиями (обработчики событий и т. Д.).
Собака (https://coderwall.com/p/ta4caw/using-iife-to-create-private-members-in-javascript)
true - конструктор
false - getter
false - установщик уникален в каждом случае
Диаграмма
true - конструктор
true - метод имеет один экземпляр во всех объектах
var Dog = (function() {
var name = "defaut name";
var DogInner = function() {
this.getName = function() {
return name;
};
this.setName = function(value) {
name = value;
};
};
return DogInner;
})(); // this does the trick
var results = ["Dog"]
var dog = new Dog();
var dog1 = new Dog();
results.push(dog.Dog === dog1.Dog); // true
results.push(dog.setName === dog1.setName); // false
results.push(dog.setName === dog1.setName); // false
// IIFE object picked from my code
var Chart = (function() {
function Chart() {}
Chart.prototype.drawChart = function(data) {}
return Chart;
})();
results.push(' ');
results.push("Chart");
var chart1 = new Chart();
var chart2 = new Chart();
results.push(chart1.Chart === chart2.Chart); // true
results.push(chart1.drawChart === chart2.drawChart); // true
console.log(results.join('\n'));