2016-01-26 3 views
1

Я работаю на яваскрипта файл с Javascriptfunctions, которые не внутри крышки.
Очевидно, что функция вызывается консолью.Создание Javascript функции недоступны из консоли

Я знаю, что добавление закрытия - лучшая практика. Но в то время как мастерить я обнаружил, что, если я добавлю в свой файл

window.myFunction = {} 

функция становится недоступной через консоль. Это безопасно?

+2

Это назначает новый пустой объект в качестве значения вашей функции, и поэтому ваша функция не будет зависеть больше. Вы не сможете вызвать его на консоли или в другом месте. – Pappa

+0

На самом деле, что случилось со мной, я создал экземпляр объекта, а затем установил его в {}, поэтому он работал (потому что позже я вызывал экземпляр, а не сам объект) –

ответ

2

все глобальные переменные/функции в 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

Смежные вопросы