Я использую 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.