Czasami będziesz potrzebował stworzyć automatycznie wykonywany obiekt (na przykład w przypadku zdarzeń load/document ready).
Czy próbowałeś zrobić to w ten sposób?
(function() {
// Elementy
var z;
// Metody prywatne
var internalObj = {
init: function() {
console.log('init')
}
};
// Automatycznie wywołujący się konstruktor
(function() {
console.log('start');
internalObj.init();
})();
})();
Automatycznie wykonywany obiekt
Co zrobisz, jeśli chcesz mieć zewnętrzne API do swojego "automatycznie wykonywanego obiektu"? Możesz to zrobić w ten sposób:
var auto = (function() {
// Elementy
var z;
// Metody prywatne
var internalObj = {
init: function() {
console.log('init')
}
};
// Automatycznie wywołujący się konstruktor
(function() {
console.log('start');
internalObj.init();
})();
return { initObj: internalObj.init}
})();
auto.initObj();
Obecnie tworzymy zmienną, do której przypisujemy obiekt. Ten obiekt zwraca API z jedną metodą, która jest równa metodzie init wewnętrznego obiektu.
Ale co zrobić, jeśli nie chcemy tego robić w ten sposób i nie chcemy tworzyć żadnego nowego obiektu przypisanego do zmiennej?
(function() {
// Elementy
var z;
// Metody prywatne
var internalObj = {
init: function() {
console.log('init')
}
};
// Automatycznie wywołujący się konstruktor
(function() {
console.log('start');
internalObj.init();
})();
this.init = internalObj.init;
})();
init();
Więc this.init = internalObj.init przypisuje do funkcji window (globalnej) funkcję z naszego internalObj - init.





