DevGang
Авторизоваться

Знакомство с объектами

Объекты находятся везде в JavaScript. Получение дополнительных знаний об объектах определенно поможет вам в какой-то момент вашего путешествия. В этом посте мы рассмотрим некоторые свойства и методы объектов, о которых большинство разработчиков не знают или не считают полезными.

Я надеюсь, что вы уже знакомы с синтаксисом создания объекта.

let obj = { key: "value" }

Но знаете ли вы, что мы можем сделать множество настроек для этих ключей и значений?

Метод Object.defineProperty дает вам возможность контролировать поведение свойства. Посмотрим, как это работает.

let obj = {}

Object.defineProperty( obj, "a", {
    value: 1,
    writable: false,
    configurable: true,
    enumerable: true
} )

defineProperty принимает три аргумента.

  1. Объект, в котором вы пытаетесь создать свойство.
  2. Наименование имущества.
  3. Объект конфигурации.

Теперь поговорим об объекте конфигурации.

Значение

Значением может быть любое допустимое значение, которое вы хотите установить с помощью клавиши (а).

Writable

Если вы установите для записи как ложный. Вы не сможете редактировать значение.

obj.a = "new value"   // Oops, not allowed.

Configurable

Если мы установим configurable как правда. Мы можем изменить поведение в любое время с помощью того же метода defineProperty , но если вы установите false , вы не сможете изменить его снова. Это односторонняя операция.

Enumerable

Если установить enumerable в false, он не будет отображаться в перечислениях, таких как петля for...in .

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

preventExtensions

Как следует из названия. Это помешает вам установить дополнительные свойства объекта.

let obj = { a: 1 };

Object.preventExtensions( obj );

obj.b = 2;   // in strcit mode it will throw an error.

console.log( obj.b )   // undefined

Seal

Этот метод работает так же, как preventExtensions , но он делает все существующие свойства как configurable: false . Таким образом, вы не можете добавить новые свойства, а также не можете перенастроить его. Опять односторонняя операция.

let obj = { a: 1 };

Object.seal( obj );

obj.b = 2;   // in strcit mode it will throw an error.

console.log( obj.b )   // undefined

Freeze

Это высочайший уровень неизменности. Freeze устанавливает все «средства доступа к данным» объекта как writable: false .

let obj = { a: 1 };

Object.freeze( obj );

obj.b = 2;   // in strcit mode it will throw an error.

console.log( obj.b )   // undefined

Это методы, которые я нашел полезными и интересными. Если вы знаете еще несколько интересных методов, пожалуйста, прокомментируйте ниже. Я вернусь с другим захватывающим постом, до тех пор пока.

Источник:

#JavaScript
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться