Часто встречал такую конструкцию.
var fun1 = function() {
this.init = function() {
console.log('Функция 1');
}
return this;
}();
<button onclick="fun1.init();">Какое ни будь действие</button>
Не совсем понимаю зачем вложенная функция init() присваивается обьекту this, а так же зачем в конце возвращается this.
В общем создал вторую такую функцию.
var fun2 = function() {
this.init = function() {
console.log('Функция 2');
}
return this;
}();
Но теперь при вызове fun1.init(); в консоль выводится текст "Функция 2", то есть функция init() была переопределена из функции 2, почему так происходит? И как сделать что бы fun1.init(); и fun2.init(); выполняли разный код?