Свойства объекта и их конфигурация Flashcards
(36 cards)
Что такое флаги свойств объектов?
Флаги свойств объектов – это дополнительные свойства, которые определяют особенности поведения и хранения значения самого свойства объекта.
Какие флаги доступны для свойств объектов?
Для свойств объектов доступны три флага: writable, enumerable и configurable.
Что означает флаг writable?
Флаг writable определяет, можно ли изменять значение свойства объекта. Если значение этого флага равно true, то свойство можно изменять, если false – то свойство доступно только для чтения.
Что означает флаг enumerable?
Флаг enumerable определяет, будет ли свойство объекта перечислено в циклах. Если значение этого флага равно true, то свойство будет перечислено в циклах, если false – то свойство будет игнорироваться циклами.
Что означает флаг configurable?
Флаг configurable определяет, можно ли изменять или удалять свойство объекта. Если значение этого флага равно true, то свойство можно изменять и удалять, если false – то свойство нельзя удалить и изменять флаги writable, enumerable и configurable уже нельзя.
Что делает метод Object.getOwnPropertyDescriptor?
Метод Object.getOwnPropertyDescriptor позволяет получить дескриптор свойства объекта.
Каким образом можно получить дескриптор свойства объекта?
Для получения дескриптора свойства объекта можно использовать метод Object.getOwnPropertyDescriptor, передав в качестве аргументов объект и имя свойства.
Что содержит дескриптор свойства объекта?
Дескриптор свойства объекта содержит значение свойства и его флаги (writable, enumerable и configurable).
Какие флаги будут присвоены свойству, если в методе Object.defineProperty не указаны никакие флаги явно?
Если в методе Object.defineProperty не указаны никакие флаги явно, то всем флагам (writable, enumerable, configurable) будет присвоено значение false.
Как изменить флаг writable свойства на true?
Для изменения флага writable на true необходимо вызвать метод Object.defineProperty() с дескриптором, содержащим ключ writable со значением true. Например:
let user = { name: “John” };
Object.defineProperty(user, “name”, {
writable: true
});
Как сделать так, чтобы нельзя было изменять свойство объекта?
С помощью Object,defineProperty():
let user = {
name: “John”
};
Object.defineProperty(user, “name”, {
writable: false
});
user.name = “Pete”; // Ошибка: Невозможно изменить доступное только для чтения свойство ‘name’
Какие ошибки возникнут при попытке изменить свойство с флагом writable и configurable со значением false в строгом режиме?
При попытке изменить свойство с флагом writable и configurable со значением false в строгом режиме возникнет ошибка. Если же строгий режим не включен, то интерпретатор будет действовать согласно флагам, но ошибок не будет.
Как можно сделать метод объекта неперечисляемым?
Чтобы сделать метод объекта неперечисляемым, необходимо присвоить флагу enumerable значение false при помощи метода Object.defineProperty().
Что происходит, если свойство имеет флаг configurable: false?
Если свойство имеет флаг configurable: false, то нельзя изменить флаг конфигурации (configurable) и все остальные флаги (writable, enumerable). Свойство также нельзя удалить.
Какие флаги имеет свойство Math.PI?
Свойство Math.PI имеет флаги: значение (value) – 3.141592653589793, записываемость (writable) – false, перечисляемость (enumerable) – false и конфигурируемость (configurable) – false.
Что делает метод Object.defineProperties и как его использовать?
Метод Object.defineProperties позволяет определить множество свойств с их дескрипторами в объекте. Для этого нужно передать первым аргументом объект, в котором нужно определить свойства, а вторым аргументом объект, свойства которого являются именами свойств для определения их дескрипторов.
Как можно получить дескрипторы всех свойств объекта?
Для получения дескрипторов всех свойств объекта можно использовать метод Object.getOwnPropertyDescriptors, который возвращает объект с дескрипторами всех свойств объекта.
Как можно скопировать объект вместе с его флагами?
Для клонирования объекта вместе с его флагами можно использовать метод Object.defineProperties, передав первым аргументом пустой объект, а вторым аргументом результат вызова метода Object.getOwnPropertyDescriptors с клонируемым объектом в качестве аргумента.
Какие отличия между методом Object.getOwnPropertyDescriptors и циклом for..in?
Метод Object.getOwnPropertyDescriptors возвращает дескрипторы всех свойств объекта, включая неперечисляемые и символьные свойства, в то время как цикл for..in игнорирует эти свойства. Кроме того, при клонировании объекта с помощью цикла for..in не будут скопированы флаги свойств.
Какие методы позволяют ограничить доступ ко всему объекту?
Методы Object.preventExtensions(obj), Object.seal(obj), Object.freeze(obj). На практике используются редко.
Какой метод позволяет проверить, разрешено ли добавление свойств в объект?
Метод Object.isExtensible(obj). На практике используется редко.
Какой метод возвращает true, если добавление/удаление свойств запрещено и для всех существующих свойств установлено configurable: false?
Метод Object.isSealed(obj). На практике используется редко.
Какой метод запрещает добавлять/удалять/изменять свойства и устанавливает configurable: false, writable: false для всех существующих свойств?
Метод Object.freeze(obj). На практике используется редко.
Что такое свойства-аксессоры?
Свойства-аксессоры (свойства доступа) - это функции, которые используются для присвоения и получения значения свойства. В их дескрипторе отсутствуют value и флаг writable.