Я использую 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 warning" в каком-нибудь браузере, чтобы я мог знать, когда пытаюсь изменить объект "Object.frozen".