【发布时间】:2012-03-29 23:17:59
【问题描述】:
像这样设置属性描述符:
Object.defineProperty(window, 'someFunction', {
value: function() { alert('safe'); },
writable: false,
enumerable: false,
configurable: false
});
...据我所知,应该使window 的someFunction 属性不可写。正如我所料,它适用于函数表达式,函数是否直接分配给对象属性... fiddle
window.someFunction = function() { alert('boom!'); }
someFunction(); // safe
...或分配给全局变量:fiddle
var someFunction = function() { alert('boom!'); }
someFunction(); // safe
但是,它似乎不适用于 函数声明:fiddle
function someFunction() { alert('boom!'); }
someFunction(); // boom!
这种行为是故意的吗?其背后的原因是什么?这在任何地方都有记录吗?还是我只是犯了一些愚蠢的错误?
顺便说一句,我正在使用 Chromium 17 进行测试。严格模式似乎没有任何区别。
【问题讨论】:
标签: javascript function global-variables ecmascript-5 propertydescriptor