我使用Object.freeze来防止自己破坏自己的规则.当我尝试做一个坏的作业时,我希望Object.freeze跟我说话.但是,Object.freeze只是让作业静默地失败!例如,如果我这样做
/* * Frozen singleton object "foo". */ var foo = (function() { var me = {}; me.bar = 1; if (Object.freeze) { Object.freeze(me); } return me; })(); foo.bar = 2; console.log(foo.bar);
控制台会记录“1”,但我不知道我做了一个不好的任务.这当然可以导致我的代码中的危险意外行为,当整个点冻结对象是为了避免意外.事实上,我更可能通过不冻结对象来获得详细的错误输出,让错误的配置发生,并且由于错误的值让我的代码失败了.
我想知道JavaScript是否有任何隐藏的“不可变对象警告”的pragma在任何浏览器,所以我可以知道当我尝试突变“Object.frozen”对象.