Рубрики
Без рубрики

Учебное пособие по глубокому замораживанию для начинающих у начинающих

Учебное пособие по глубокому замораживанию для начинающих от новичков, которого я получил в веб -разработке лишь несколько … Tagged with JavaScript, начинающие, учебник.

Я попал в веб -разработку всего несколько месяцев назад, и несколько дней назад я наткнулся на вопрос интервью с просьбой написать код, чтобы глубоко заморозить объект.

Но что такое замораживает объект ???

Замораживание объекта означает предотвращение добавления новых свойств к нему, существующие свойства удаляются, предотвращает изменение перечисления, конфигурации или записи существующих свойств. В основном замораживание объекта означает, что мы Невозможно Добавить, удалить или изменить существующие свойства, которые в противном случае были бы возможны в JavaScript, так как это динамический язык.

Чтобы заморозить объекты в JavaScript, мы используем object.freeze () метод

const obj = {
  name: "Hritick",
};

console.log(obj.name); //* Prints -> Hritick

obj.name = "Hritick Jaiswal";
console.log(obj.name);//* Prints -> Hritick Jaiswal

Но теперь, если мы используем Object.Freeze

Object.freeze(obj); //* Freezes the object
console.log(Object.isFrozen(obj)); //* Checks if an object is frozen or not

obj.name = "Hritick"; //* Changing values is ignored
console.log(obj);//* Prints -> { name: 'Hritick Jaiswal' }

obj.surname = "Jaiswal"; //* Adding values is ignored
console.log(obj);//* Prints -> { name: 'Hritick Jaiswal' }

delete obj.name; //* Deleting values is ignored
console.log(obj);//* Prints -> { name: 'Hritick Jaiswal' }

Хорошо, отлично, но, черт возьми, глубоко замораживает, и если у нас есть Object.Freeze И зачем нам это нужно.

const obj = {
  name: "Hritick",
  address: {
    is: "Kolkata",
  },
};

console.log(obj.address.is);//* Prints -> Kolkata

Object.freeze(obj)

obj.address.is = "Hyderabad"; //! This is allowed
console.log(obj.address.is);//* Prints -> Hyderabad

Так почему Object.freeze не сработал ???

Ну, объект.freeze работал Он сделал «замораживание» свойства объекта «obj» в качестве свойства «адрес», который хранит местоположение памяти объекта {is: “kolkata”}, который Невозможно изменить, но Object.Freeze работает только на непосредственном слое.

Глубокое замораживание предотвращает такие случаи. Так что нам делать ….

function deepFreeze(object) {
  if (typeof object !== "object") return;

  for (const value of Object.values(object)) {
    deepFreeze(value);
  }

  Object.freeze(object);
}

Приведенный выше код использует рекурсия в основном заморозить каждый объект, независимо от того, на каком уровне он.

И вот и все, это мой первый пост здесь, поэтому, если я сделал какие -либо ошибки или у кого -либо есть какие -либо предложения пожалуйста, скажите мне

Оригинал: “https://dev.to/newbiehritick/deep-freeze-tutorial-for-beginners-by-a-beginner-1glf”