很好奇为什么下面的代码会给出如此“奇怪”的结果:
var f = function() {}
$.extend(f, Object.freeze({foo1:"bar1"}));
在 Chrome 中输入(请查看更新 - 它位于Chromium中,而不是来自此处和下方的Chrome )控制台:
> f.foo1
Chrome 控制台中的结果是:
> undefined
此外,尝试以下方法:
$.extend(f, {foo2:Object.freeze([1,2,3])});
在 Chrome 控制台中输入:
> f.foo2
结果更奇怪:
> function Object() { [native code] }
我究竟做错了什么?为什么使用Object.freeze()
会产生这些影响?
更新:不在Chrome中,但在Chromium 18中(在撰写本文时 Ubuntu 上的最新版本)。我想这是一个实现错误。接受唯一的答案,尽管效果仍然可以在我的浏览器上重现。