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