我使用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是否在任何浏览器中都有任何隐藏的"不可变对象警告"编译指示,以便我可以知道何时尝试改变"Object.frozen"对象.