Установка дескриптора свойства следующим образом:
Object.defineProperty(window, 'someFunction', {
value: function() { alert('safe'); },
writable: false,
enumerable: false,
configurable: false
});
... должен, насколько я знаю, сделать свойство someFunction
для window
недоступным для записи. Он работает для выражений функций , как я ожидаю, напрямую ли функция назначена свойству объекта ... fiddle
window.someFunction = function() { alert('boom!'); }
someFunction(); // safe
... или присваивается глобальной переменной: скрипка
var someFunction = function() { alert('boom!'); }
someFunction(); // safe
Однако, похоже, он не работает с объявлениями функций : fiddle
function someFunction() { alert('boom!'); }
someFunction(); // boom!
Является ли это поведение преднамеренным? Какова причина этого? Это где-нибудь задокументировано? Или я просто делаю какую-то глупую ошибку?
Кстати, я использую Chromium 17 для проверки этого. Строгий режим, кажется, не имеет никакого значения.