Конфигурируемые свойства объекта. — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Конфигурируемые свойства объекта.

2017-06-29 301
Конфигурируемые свойства объекта. 0.00 из 5.00 0 оценок
Заказать работу

Свойства объекта часто определяют как пары «ключ-значение». По большому счету это не совсем так. Кроме собственно имени и значения свойства также имеют так называемые атрибуты. В спецификации ECMAScript 3 атрибуты свойств не доступны для чтения и записи, однако, в ECMAScript 5 предусмотрены методы для работы с атрибутами свойств.

Атрибуты свойств

value — содержит непосредственно данные

writable — определяет, доступно ли данное свойство для записи (по умолчанию, true)

set — содержит setter, функцию, которая вызывается при записи свойства

get — содержит getter, функцию, которая вызывается при чтении свойства

enumerable — определяет доступность свойства для перечисления

configurable — определяет доступность свойства для изменения (например, может ли свойство быть удалено, может ли быть изменен какой-либо атрибут свойства)

Дескрипторы свойств

Дескриптор свойства объекта описывает атрибуты свойства в виде объекта, именами свойств этого объекта являются названия атрибутов, а значениями — значения атрибутов. Получить дескриптор свойства можно с помощью метода Object.getOwnPropertyDescriptor().

Получим дескрипторы свойств объекта circle:

var circle = { x: 0, y: 0, r: 15,};console.log(Object.getOwnPropertyDescriptor(circle, 'r'));/* Получим объект{ configurable: true, enumerable: true, value: 15, writable: true,}*/

С дескрипторами свойств также работают следующие функции:

Object.defineProperty() — создает или изменяет свойство объекта, возвращает модифицированный объект:

const bob2 = {

age: 20,

};

Object.defineProperty(

bob2,

'name',

{

value: 'Bob',

}

);

Object.defineProperty(

bob2,

'age',

{

configurable: true,

value: 21,

}

);

Object.defineProperties() — метод аналогичен defineProperty, но позволяет оперировать сразу с несколькими свойствами. Также возвращает модифицированный объект.

Object.defineProperties(bob2, { name: { value: 'Jhon', }, age: { value: 36, enumerable: false, },});

Object.create() — создание объекта. В качестве первого параметра принимает объект-прототип создаваемого объекта, в качестве второго необязательного параметра — список свойств объекта.

Перечислимые свойства объекта

Атрибут enumerable определяет, доступно ли свойство для перечисления, а именно, будет ли оно доступно в циклах for/in, все остальные операции игнорирую атрибут enumerable.

Иммутабельность объектов. Копирование объектов.

Что такое иммутабельность?

Неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания. Результатом любой модификации такого объекта всегда будет новый объект, при этом старый объект не изменится.

var immutableArr = Immutable([1, 2, 3, 4]);var newImmutableArr = immutableArr.concat([5]);console.log(immutableArr); //[1, 2, 3, 4];console.log(newImmutableArr); //[1, 2, 3, 4, 5];

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

var state = Immutable({ style: { color: { r: 128, g: 64, b: 32, }, font: { family: 'sans-serif', size: 14, }, }, text: 'Example', bounds: { size: { width: 100, height: 200, }, position: { x: 300, y: 400, }, },});var nextState = state.setIn(['style', 'color', 'r'], 99);state.bounds === nextState.bounds; //truestate.text === nextState.text; //true

В памяти объекты будут представлены следующим образом:

 

Копирование по ссылке

Фундаментальным отличием объектов от примитивов, является их хранение и копирование «по ссылке». В переменной, которой присвоен объект, хранится не сам объект, а «адрес его места в памяти», иными словами – «ссылка» на него.

Вот как выглядит переменная, которой присвоен объект:

var user = {

name: "Вася"

};

 

Внимание: объект – вне переменной. В переменной – лишь «адрес» (ссылка) для него.


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.