Объекты Flashcards

1
Q

Как можно создать объект?

A

Можно создать объект с помощью конструктора или литерала {}.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое свойство объекта?

A

Свойство объекта — это пара ключ/значение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как можно добавить свойство в объект?

A

Свойство можно добавить с помощью точки или квадратных скобок.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Как можно удалить свойство из объекта?

A

Свойство можно удалить с помощью оператора delete.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Можно ли изменять содержимое объектов, которые созданы через const?

A

Да, можно изменять содержимое объектов, которые созданы через const, но нельзя перезаписывать сам объект.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое зарезервированные слова, и можно ли использовать их в качестве названия свойств объекта?

A

Зарезервированные слова - это ключевые слова, используемые в языке программирования. Их можно использовать в качестве названия свойств объекта.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что возвращает сравнение свойства, которого нет в объекте, с undefined?

A

true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что возвращает оператор in, если свойство существует в объекте?

A

true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

С помощью какого оператора можно итерироваться по свойствам объекта?

A

с помощью оператора in в конструкции for…in.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какие значения будут выведены при итерации по объекту с помощью цикла for…in?

A

Ключи объекта (имена свойств), а затем значения свойств, соответствующих этим ключам.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

В каком порядке перечисляются свойства объекта, если их ключи являются целочисленными значениями?

A

Перечисляются в порядке возрастания целочисленных значений ключей.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

В каком порядке перечисляются свойства объекта, если их ключи НЕ являются целочисленными значениями?

A

Перечисляются в порядке, в котором свойства были созданы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как отсортировать свойства объекта по возрастанию значений ключей?

A

Нужно записать ключи свойств в виде целочисленных значений.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Чем отличаются объекты от примитивных типов данных?

A

Объекты хранятся по ссылке, в то время как примитивные типы данных хранятся в переменных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что произойдет, если переменной присвоить уже существующий объект и изменить значения в свойствах нового объекта?

A

Изменения будут отображаться и в старом объекте, так как переменная содержит ссылку на объект.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как работают операторы == и === для объектов?

A

Они работают одинаково и сравнивают объекты по ссылке.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как можно скопировать объект?

A

Можно скопировать объект, используя цикл for..in или метод Object.assign().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Как скопировать объект, если он содержит внутри себя другие объекты?

A

В этом случае необходимо в цикле проверять каждое свойство объекта на наличие других объектов и копировать их рекурсивно. Также можно воспользоваться библиотекой lodash и методом _.cloneDeep(object).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Какой принцип управления памятью используется в JavaScript?

A

В JavaScript используется принцип достижимости для управления памятью.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Что такое корни в контексте сборки мусора в JavaScript?

A

Корни в контексте сборки мусора в JavaScript - это достижимые значения, которые не могут быть удалены, такие как выполняемая в данный момент функция и ее локальные переменные и параметры, другие функции в текущей цепочке вложенных вызовов, глобальные переменные и некоторые другие внутренние значения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Как работает основной алгоритм сборки мусора в JavaScript?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Какие оптимизации могут использоваться для ускорения сборки мусора в JavaScript?

A

В JavaScript могут использоваться различные оптимизации для ускорения сборки мусора, такие как сборка по поколениям (Generational collection), инкрементальная сборка (Incremental collection) и сборка в свободное время (Idle-time collection).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Что такое метод объекта?

A

Метод объекта - это функция, которая связана с объектом и может быть вызвана через него.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Как добавить метод объекту?

A

Метод можно добавить к объекту, присвоив ему функцию, используя синтаксис “имя_объекта.имя_метода = функция”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Как использовать сокращенную запись метода объекта?
Сокращенную запись метода можно использовать, объявив функцию как свойство объекта, используя синтаксис "method() { body }".
26
Что такое "this" в методе объекта?
"this" - это ссылка на текущий объект, который вызывает метод.
27
Можно ли использовать "this" в любой функции?
Да, "this" может быть использован в любой функции, но его значение зависит от контекста вызова функции.
28
Что произойдет, если вызвать функцию без объекта?
В нестрогом режиме "this" будет ссылаться на глобальный объект window, а в строгом режиме будет "undefined".
29
Что такое ссылочный тип (Reference type) и как он используется?
Ссылочный тип - это внутренний тип языка, который используется при доступе к методу объекта через точку или квадратные скобки. Он включает в себя объект, имя свойства и флаг "строгого режима".
30
Как работают стрелочные функции в контексте объекта?
Стрелочные функции получают контекст извне, поэтому если они объявлены внутри объекта, они получат контекст этого объекта.
31
Что такое функция-конструктор?
Функция-конструктор - это специальная функция, которая используется для создания объектов с заданными свойствами и методами.
32
Как вызывается функция-конструктор?
Функция-конструктор вызывается с оператором new.
33
Что происходит, когда функция-конструктор вызывается с оператором new?
При вызове функции-конструктора с оператором new происходит неявное создание объекта, который сохраняется в контексте, затем мы сохраняем в контекст что-либо еще, после чего неявно возвращается текущий объект.
34
Что происходит, когда функция-конструктор вызывается без оператора new?
Когда функция-конструктор вызывается без оператора new, это может привести к ошибке, так как контекст будет определен некорректно.
35
Как проверить, вызвана ли функция-конструктор с оператором new или без него?
Для проверки можно использовать свойство new.target. Если функция вызывается с new, в new.target возвращается сама функция. Если без new - undefined.
36
Можно ли из конструктора вернуть что-то кроме объекта? Что будет, если попытаться вернуть не объект?
Из конструктора явно можно вернуть только объект, если попробовать вернуть не объект - то в любом случае вернется this.
37
Можно ли создавать методы внутри функции-конструктора?
Да, внутри функции-конструктора можно создавать методы.
38
Что делает опциональная цепочка ?. в JavaScript?
Опциональная цепочка ?. в JavaScript позволяет избежать ошибки TypeError при обращении к свойству или методу объекта, который может быть равен undefined или null.
39
Какое значение возвращает выражение с использованием опциональной цепочки, если значение перед ?. равно undefined или null?
Выражение с использованием опциональной цепочки возвращает undefined, если значение перед ?. равно undefined или null.
40
Может ли переменная перед ?. не существовать при использовании опциональной цепочки?
Нет, переменная перед ?. должна существовать, иначе будет ошибка ReferenceError.
41
Можно ли использовать опциональную цепочку после значения, а не перед ним?
Нет, опциональная цепочка должна использоваться перед значением, а не после него.
42
Какие операции можно выполнять с использованием опциональной цепочки?
Можно вызывать методы и обращаться к свойствам объектов с использованием опциональной цепочки. Также можно использовать опциональную цепочку с оператором delete.
43
Что произойдет при использовании опциональной цепочки для записи значения в несуществующий объект?
Запись значения в несуществующий объект с использованием опциональной цепочки приведет к ошибке, так как операция записи не может быть выполнена на undefined или null.
44
Что такое тип данных Symbol?
Symbol - это тип данных в JavaScript, представляющий уникальный идентификатор.
45
Как создать символ?
Символ создается с помощью функции-обертки Symbol().
46
Можно ли дать символу описание (имя)? Если да, то как?
Да, символу можно дать описание (имя) с помощью функции-обертки Symbol(description).
47
Уникальны ли символы с одинаковыми описаниями?
Да, символы с одинаковыми описаниями являются уникальными.
48
Какие свойства объекта не видно при использовании ключей типа Symbol?
При использовании ключей типа Symbol невидимы свойства объекта с такими ключами при использовании циклов for..in и Object.keys().
49
Какие системные символы есть в JavaScript?
В JavaScript существует множество системных символов, использующихся внутри самого языка, их перечень можно найти в спецификации в таблице Well-known symbols.
50
Как получить символ по имени и наоборот?
Для чтения символа из глобального реестра по имени используется функция Symbol.for(key), для чтения имени глобального символа по символу используется функция Symbol.keyFor(sym).
51
Что вернет логическое преобразование любого объекта в JavaScript?
true.
52
В каких случаях происходит численное преобразование объекта в JavaScript?
При вычитании или применении математических функций.
53
В каких случаях происходит строковое преобразование объекта в JavaScript?
При вызове функций вывода, таких как alert().
54
Что такое хинты преобразования типов в JavaScript?
Хинты - это подсказки, которые используются в JavaScript для определения типа преобразования объекта в примитив.
55
Какой хинт применяется при вызове функций вывода, таких как alert(), с объектом в качестве аргумента?
Хинт "string".
56
Какой хинт применяется при вычитании объекта в JavaScript?
Хинт "number".
57
Какой хинт применяется при использовании бинарного оператора + с объектом в JavaScript?
Хинт "default".
58
Что произойдет, если сравнить объект и число в JavaScript?
JavaScript применит хинт "default" и выполнит неявное преобразование типов, чтобы сравнить объект и число.
59
Что происходит, когда происходит операция сложения объекта с числом?
Вызывается метод [Symbol.toPrimitive] объекта с хинтом "default" или "number", если такой метод не определен, то попытка вызвать методы obj.toString() или obj.valueOf(), смотря какой из них существует. Возвращаемое значение зависит от реализации метода [Symbol.toPrimitive]. В данном случае, если объект имеет свойство money, то возвращается его значение (количество денег), которое затем складывается с числом.
60
Что происходит, когда происходит операция сложения объекта со строкой?
Вызывается метод [Symbol.toPrimitive] объекта с хинтом "default" или "string", если такой метод не определен, то попытка вызвать методы obj.toString() или obj.valueOf(), смотря какой из них существует. Возвращаемое значение зависит от реализации метода [Symbol.toPrimitive]. В данном случае, если объект имеет свойство name, то возвращается строка в формате "{name: "John"}", которая затем конкатенируется со строкой.
61
Что происходит, когда происходит операция преобразования объекта в число с помощью унарного плюса (+obj)?
Вызывается метод [Symbol.toPrimitive] объекта с хинтом "default" или "number", если такой метод не определен, то попытка вызвать методы obj.toString() или obj.valueOf(), смотря какой из них существует. Возвращаемое значение зависит от реализации метода [Symbol.toPrimitive]. В данном случае, если объект имеет свойство money, то возвращается его значение (количество денег), которое затем преобразуется в число.
62
Что происходит при вызове преобразования объекта в строку с использованием старого способа?
Вызывается метод toString объекта, а если он не определен, то вызывается метод valueOf.
63
Что происходит при вызове преобразования объекта в число с использованием старого способа?
Вызывается метод valueOf объекта, а если он не определен, то вызывается метод toString.
64
Какие методы используются по умолчанию при преобразовании объекта в строку и число с использованием старого способа?
При преобразовании объекта в строку по умолчанию используется метод toString, а при преобразовании объекта в число - метод valueOf.
65
Что возвращает метод toString по умолчанию?
Метод toString по умолчанию возвращает строку "[object Object]".
66
Что возвращает метод valueOf по умолчанию?
Метод valueOf по умолчанию возвращает сам объект (то есть он игнорируется).