Сообщение от Universe
|
//Window можно и не передавать, но тогда к нему нельзя будет обратится в локальных функция
|
тут неудачное название параметра функции, window доступен всегда, такая запись позволяет избавиться от имени неймспейса
var namespace = {};
namespace.property = value;
в данном случает namespace = window
var namespace = window;
namespace.property = value;
window.property == value // → true
то есть мы сможем поменять namespace, как захотим, и не придется во всем коде переписывать его название:
(function (namespace) {
namespace.property = value;
}(window));
//или
(function (namespace) {
namespace.property = value;
}(otherObject));
поменялся только аргумент функции, в теле ничего менять не пришлось
Сообщение от Universe
|
//После того как функция выполнится - все переменные в этом блоке будут уничтожены
|
Нет, их замкнут в себе Ball и init, а так как Ball и init будут доступны по ссылке всегда, то замкнутые переменные никуда не денутся из памяти, они просто не доступны глобально, но доступны внутри Ball и init