Объекты 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
Q

Как использовать сокращенную запись метода объекта?

A

Сокращенную запись метода можно использовать, объявив функцию как свойство объекта, используя синтаксис “method() { body }”.

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

Что такое “this” в методе объекта?

A

“this” - это ссылка на текущий объект, который вызывает метод.

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

Можно ли использовать “this” в любой функции?

A

Да, “this” может быть использован в любой функции, но его значение зависит от контекста вызова функции.

28
Q

Что произойдет, если вызвать функцию без объекта?

A

В нестрогом режиме “this” будет ссылаться на глобальный объект window, а в строгом режиме будет “undefined”.

29
Q

Что такое ссылочный тип (Reference type) и как он используется?

A

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

30
Q

Как работают стрелочные функции в контексте объекта?

A

Стрелочные функции получают контекст извне, поэтому если они объявлены внутри объекта, они получат контекст этого объекта.

31
Q

Что такое функция-конструктор?

A

Функция-конструктор - это специальная функция, которая используется для создания объектов с заданными свойствами и методами.

32
Q

Как вызывается функция-конструктор?

A

Функция-конструктор вызывается с оператором new.

33
Q

Что происходит, когда функция-конструктор вызывается с оператором new?

A

При вызове функции-конструктора с оператором new происходит неявное создание объекта, который сохраняется в контексте, затем мы сохраняем в контекст что-либо еще, после чего неявно возвращается текущий объект.

34
Q

Что происходит, когда функция-конструктор вызывается без оператора new?

A

Когда функция-конструктор вызывается без оператора new, это может привести к ошибке, так как контекст будет определен некорректно.

35
Q

Как проверить, вызвана ли функция-конструктор с оператором new или без него?

A

Для проверки можно использовать свойство new.target. Если функция вызывается с new, в new.target возвращается сама функция. Если без new - undefined.

36
Q

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

A

Из конструктора явно можно вернуть только объект, если попробовать вернуть не объект - то в любом случае вернется this.

37
Q

Можно ли создавать методы внутри функции-конструктора?

A

Да, внутри функции-конструктора можно создавать методы.

38
Q

Что делает опциональная цепочка ?. в JavaScript?

A

Опциональная цепочка ?. в JavaScript позволяет избежать ошибки TypeError при обращении к свойству или методу объекта, который может быть равен undefined или null.

39
Q

Какое значение возвращает выражение с использованием опциональной цепочки, если значение перед ?. равно undefined или null?

A

Выражение с использованием опциональной цепочки возвращает undefined, если значение перед ?. равно undefined или null.

40
Q

Может ли переменная перед ?. не существовать при использовании опциональной цепочки?

A

Нет, переменная перед ?. должна существовать, иначе будет ошибка ReferenceError.

41
Q

Можно ли использовать опциональную цепочку после значения, а не перед ним?

A

Нет, опциональная цепочка должна использоваться перед значением, а не после него.

42
Q

Какие операции можно выполнять с использованием опциональной цепочки?

A

Можно вызывать методы и обращаться к свойствам объектов с использованием опциональной цепочки. Также можно использовать опциональную цепочку с оператором delete.

43
Q

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

A

Запись значения в несуществующий объект с использованием опциональной цепочки приведет к ошибке, так как операция записи не может быть выполнена на undefined или null.

44
Q

Что такое тип данных Symbol?

A

Symbol - это тип данных в JavaScript, представляющий уникальный идентификатор.

45
Q

Как создать символ?

A

Символ создается с помощью функции-обертки Symbol().

46
Q

Можно ли дать символу описание (имя)? Если да, то как?

A

Да, символу можно дать описание (имя) с помощью функции-обертки Symbol(description).

47
Q

Уникальны ли символы с одинаковыми описаниями?

A

Да, символы с одинаковыми описаниями являются уникальными.

48
Q

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

A

При использовании ключей типа Symbol невидимы свойства объекта с такими ключами при использовании циклов for..in и Object.keys().

49
Q

Какие системные символы есть в JavaScript?

A

В JavaScript существует множество системных символов, использующихся внутри самого языка, их перечень можно найти в спецификации в таблице Well-known symbols.

50
Q

Как получить символ по имени и наоборот?

A

Для чтения символа из глобального реестра по имени используется функция Symbol.for(key), для чтения имени глобального символа по символу используется функция Symbol.keyFor(sym).

51
Q

Что вернет логическое преобразование любого объекта в JavaScript?

A

true.

52
Q

В каких случаях происходит численное преобразование объекта в JavaScript?

A

При вычитании или применении математических функций.

53
Q

В каких случаях происходит строковое преобразование объекта в JavaScript?

A

При вызове функций вывода, таких как alert().

54
Q

Что такое хинты преобразования типов в JavaScript?

A

Хинты - это подсказки, которые используются в JavaScript для определения типа преобразования объекта в примитив.

55
Q

Какой хинт применяется при вызове функций вывода, таких как alert(), с объектом в качестве аргумента?

A

Хинт “string”.

56
Q

Какой хинт применяется при вычитании объекта в JavaScript?

A

Хинт “number”.

57
Q

Какой хинт применяется при использовании бинарного оператора + с объектом в JavaScript?

A

Хинт “default”.

58
Q

Что произойдет, если сравнить объект и число в JavaScript?

A

JavaScript применит хинт “default” и выполнит неявное преобразование типов, чтобы сравнить объект и число.

59
Q

Что происходит, когда происходит операция сложения объекта с числом?

A

Вызывается метод [Symbol.toPrimitive] объекта с хинтом “default” или “number”, если такой метод не определен, то попытка вызвать методы obj.toString() или obj.valueOf(), смотря какой из них существует. Возвращаемое значение зависит от реализации метода [Symbol.toPrimitive]. В данном случае, если объект имеет свойство money, то возвращается его значение (количество денег), которое затем складывается с числом.

60
Q

Что происходит, когда происходит операция сложения объекта со строкой?

A

Вызывается метод [Symbol.toPrimitive] объекта с хинтом “default” или “string”, если такой метод не определен, то попытка вызвать методы obj.toString() или obj.valueOf(), смотря какой из них существует. Возвращаемое значение зависит от реализации метода [Symbol.toPrimitive]. В данном случае, если объект имеет свойство name, то возвращается строка в формате “{name: “John”}”, которая затем конкатенируется со строкой.

61
Q

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

A

Вызывается метод [Symbol.toPrimitive] объекта с хинтом “default” или “number”, если такой метод не определен, то попытка вызвать методы obj.toString() или obj.valueOf(), смотря какой из них существует. Возвращаемое значение зависит от реализации метода [Symbol.toPrimitive]. В данном случае, если объект имеет свойство money, то возвращается его значение (количество денег), которое затем преобразуется в число.

62
Q

Что происходит при вызове преобразования объекта в строку с использованием старого способа?

A

Вызывается метод toString объекта, а если он не определен, то вызывается метод valueOf.

63
Q

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

A

Вызывается метод valueOf объекта, а если он не определен, то вызывается метод toString.

64
Q

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

A

При преобразовании объекта в строку по умолчанию используется метод toString, а при преобразовании объекта в число - метод valueOf.

65
Q

Что возвращает метод toString по умолчанию?

A

Метод toString по умолчанию возвращает строку “[object Object]”.

66
Q

Что возвращает метод valueOf по умолчанию?

A

Метод valueOf по умолчанию возвращает сам объект (то есть он игнорируется).