gpt4 book ai didi

javascript - 有没有办法让 "Object.frozen"对象在尝试更改它时抛出警告?

转载 作者:可可西里 更新时间:2023-11-01 01:24:06 26 4
gpt4 key购买 nike

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

最佳答案

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

要让你的代码在严格模式下运行,在包含代码的JS文件或函数的开头添加'use strict';并在实现严格模式的环境中运行它(参见for例如这个列表:http://caniuse.com/#feat=use-strict)。

关于javascript - 有没有办法让 "Object.frozen"对象在尝试更改它时抛出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com