javascript – 有没有办法使一个“Object.frozen”对象在尝试改变它时抛出警告?

前端之家收集整理的这篇文章主要介绍了javascript – 有没有办法使一个“Object.frozen”对象在尝试改变它时抛出警告?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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”对象.

解决方法

严格模式下的代码将尝试分配给不可写属性( ECMA-262: 11.13.1)时将抛出一个TypeError.但是请注意,您不能依赖于不完全支持ES5严格模式(如IE9)的浏览器中抛出的错误.

要使您的代码在严格模式下运行,请添加“use strict”;在包含代码的JS文件函数的开头,并在实现严格模式的环境中运行它(参见例如此列表:http://caniuse.com/#feat=use-strict).

猜你在找的JavaScript相关文章