Знакомство с объектами
Объекты находятся везде в JavaScript. Получение дополнительных знаний об объектах определенно поможет вам в какой-то момент вашего путешествия. В этом посте мы рассмотрим некоторые свойства и методы объектов, о которых большинство разработчиков не знают или не считают полезными.
Я надеюсь, что вы уже знакомы с синтаксисом создания объекта.
let obj = { key: "value" }
Но знаете ли вы, что мы можем сделать множество настроек для этих ключей и значений?
Метод Object.defineProperty
дает вам возможность контролировать поведение свойства. Посмотрим, как это работает.
let obj = {}
Object.defineProperty( obj, "a", {
value: 1,
writable: false,
configurable: true,
enumerable: true
} )
defineProperty
принимает три аргумента.
- Объект, в котором вы пытаетесь создать свойство.
- Наименование имущества.
- Объект конфигурации.
Теперь поговорим об объекте конфигурации.
Значение
Значением может быть любое допустимое значение, которое вы хотите установить с помощью клавиши (а).
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
Это методы, которые я нашел полезными и интересными. Если вы знаете еще несколько интересных методов, пожалуйста, прокомментируйте ниже. Я вернусь с другим захватывающим постом, до тех пор пока.