Object.freeze()

Object.freeze() - цей метод заморожує об'єкт: це значить, що він запобігає додавання нових властивостей об'єкта, видалення старих властивостей з об'єкта і зміна існуючих властивостей або значення їх атрибутів. По суті, об'єкт стає ефективно незмінним. Метод повертає заморожений об'єкт.

Синтакс:

Object.freeze( obj )

Параметри:

obj - обєкт який потрібно заморозити.

Опис:

До замороженого об'єкту не можна додавати ніяких властивостей, так само як і видалити властивості з замороженого об'єкта. Будь-які спроби зробити це зазнають невдачі, або мовчки, або викинувши виняток TypeError.

Приклад:

var obj={p:4, t:{}}; Object.freeze(obj); obj.p=3; //не змінить alert(obj.p); //4

Сама заморозка не є глибока, тобто під об'єкти можна змінювати. Приклад зміни підоб'єкта у замороженого об'єкта:

var obj={p:4, t:{}}; Object.freeze(obj); obj.p=89; //не змінить obj.t.h='як бачим заморозка не є глибока.'; //змінить alert(obj.p+" "+obj.t.h);

Функція для глибокої заморозки об'єкта:

function freezeAll(a){ Object.freeze(a); for(var key in a){ b=a[key]; if( !(typeof(b)==="object")) continue; freezeAll(b); } } var obj={p:4, t:{}}; freezeAll(obj); //виклик функції obj.p=89; obj.t.h='як бачим заморозка є глибока.'; alert(obj.p+" "+obj.t.h);