Sobes.tech
Junior

Какво прави методът freeze в JavaScript?

sobes.tech AI

Отговор от AI

Методът Object.freeze() замразява обект, предотвратявайки добавянето на нови свойства, изтриването на съществуващи и промяната на стойностите на съществуващите свойства. Той също така предотвратява промяната на прототипа на обекта. Замразеният обект остава непроменен.

Приложение на Object.freeze():

  1. Създаване на константни обекти: Гаранция, че обектът няма да бъде променен в по-късния код.
  2. Подобряване на производителността: Някои JavaScript двигатели намират по-лесно да оптимизират достъпа до неизменяеми обекти.
  3. Сигурност: Защитава вътрешните данни на обекта от случайни или злонамерени промени.

Важно бележка: Object.freeze() замразява само повърхностно (повърхностно замразяване). Ако свойствата на обекта сочат към други обекти, тези вложени обекти могат да бъдат променени, ако не са замразени отделно.

Пример:

const obj = {
  prop1: 42,
  prop2: {
    nestedProp: 'hello'
  }
};

Object.freeze(obj);

// Опитите за промяна ще бъдат игнорирани в "строг режим"
// В нестрог режим, те може да не предизвикат грешка, но промените няма да се случат
obj.prop1 = 100; // Няма да се промени
delete obj.prop1; // Няма да бъде изтрито
obj.newProp = 'world'; // Няма да бъде добавено

console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined

// Вложеният обект НЕ е замразен
obj.prop2.nestedProp = 'goodbye'; // Ще се промени
console.log(obj.prop2.nestedProp); // goodbye