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

Предотвратить модификацию объекта в JavaScript

Предотвратить модификацию объекта в JavaScript

Автор оригинала: Gaurav Singh.

Перейти к профилю Gaurav Singh

Гаурав Сингх

ECMAScript 5 Введите несколько способов предотвращения модификации объекта, который блокирует объект, чтобы убедиться, что никто, случайно или иным образом, изменяют функциональные возможности объекта.

Существует три уровня предотвращения модификации:

1: предотвратить расширения:

Новые свойства или методы не могут быть добавлены к объекту, но можно изменить существующие свойства и метод.

Например:

var employee = {
  name: "Nishant"
};

// lock the object 
Object.preventExtensions(employee);

// Now try to change the employee object property name
employee.name = "John"; // work fine

//Now try to add some new property to the object
employee.age = 24; // fails silently unless it's inside the strict mode

2: Уплотнение:

Он такой же, как предотвращение расширения, в дополнение к этому также предотвращает существующие свойства и методы от удаления.

Чтобы запечатать объект, мы используем метод Object.Seal (). Вы можете проверить, является ли объект запечатан или не использует объект .esealed ();

var employee = {
  name: "Nishant"
};

// Seal the object 
Object.seal(employee);

console.log(Object.isExtensible(employee)); // false
console.log(Object.isSealed(employee)); // true

delete employee.name // fails silently unless it's in strict mode

// Trying to add new property will give an error
employee.age = 30; // fails silently unless in strict mode

Когда объект герметичен, его существующие свойства и методы не могут быть удалены. Запечатанный объект также нерешимы.

3: заморозить:

То же самое, что и уплотнение, в дополнение к этому предотвращению существующих свойств методы от модифицированы (все свойства и методы только для чтения).

Чтобы заморозить объект, используйте объект. SFREEZE () метод. Мы также можем определить, заморожен объект, используя объект .isfrozen ();

var employee = {
  name: "Nishant"
};

//Freeze the object
Object.freeze(employee);

// Seal the object 
Object.seal(employee);

console.log(Object.isExtensible(employee)); // false
console.log(Object.isSealed(employee)); // true
console.log(Object.isFrozen(employee)); // true

employee.name = "xyz"; // fails silently unless in strict mode
employee.age = 30; // fails silently unless in strict mode
delete employee.name // fails silently unless it's in strict mode

Замороженные объекты считаются как неребимыми, так и герметичными.

Рекомендуемые:

Если вы решите предотвратить модификацию, запечатано, замораживайте объект, затем используйте в строгом режиме, чтобы вы могли поймать ошибку.

Например:

"use strict";

var employee = {
  name: "Nishant"
};

//Freeze the object
Object.freeze(employee);

// Seal the object 
Object.seal(employee);

console.log(Object.isExtensible(employee)); // false
console.log(Object.isSealed(employee)); // true
console.log(Object.isFrozen(employee)); // true

employee.name = "xyz"; // fails silently unless in strict mode
employee.age = 30; // fails silently unless in strict mode
delete employee.name; // fails silently unless it's in strict mode