Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Свойства объекта часто определяют как пары «ключ-значение». По большому счету это не совсем так. Кроме собственно имени и значения свойства также имеют так называемые атрибуты. В спецификации 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: "Вася"
};

Внимание: объект – вне переменной. В переменной – лишь «адрес» (ссылка) для него.
|
|
|
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!