все глобальные переменные/функции в Javascript (Browser) являются свойство объекта окна:
var x = "foo";
console.log(window.x); //foo
Это не лучшая практика загрязнять глобальный масштаб, но это не «небезопасно», если вы контролируете, какие скрипты использует ваша страница. (Хотя я не рекомендуется использовать глобальные переменные)
Если вам не нужно иметь глобальную переменную, следует использовать имя, которое вы знаете другой сценарий не будет использовать:
(function(window, undefined){
var privateVar = 5;
window.mySite = {
foo: "bar",
func: function(){
return "foo";
}
};
})(window);
console.log(window.mySite.func()); //"foo"
console.log(privateVar) //undefined
Сейчас вне из IIFE (Выражение с немедленной вызывной функцией) вы можете использовать window.mySite
или просто mySite
, тогда как privateVar
не будет доступен.
Более подробная информация на окне объекте here
Это назначает новый пустой объект в качестве значения вашей функции, и поэтому ваша функция не будет зависеть больше. Вы не сможете вызвать его на консоли или в другом месте. – Pappa
На самом деле, что случилось со мной, я создал экземпляр объекта, а затем установил его в {}, поэтому он работал (потому что позже я вызывал экземпляр, а не сам объект) –