Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что происходит при вызове методов (GetType, ToString) на struct?
При вызове GetType() на структуре происходит боксинг, так как этот метод наследуется от object и не переопределен в структуре. При вызове ToString() боксинг не происходит, если структура переопределяет этот метод. Для GetType() структура упаковывается в object, чтобы получить доступ к методу. Для ToString() компилятор может вызвать переопределенную версию напрямую, избегая боксингa.
От какого объекта в JavaScript в итоге наследуются все типы?
Практически все объекты в JavaScript в итоге наследуются от Object.prototype. Это “базовый” объект в прототипной цепочке, где находятся общие методы (toString, hasOwnProperty и т.д.). Сам Object.prototype обычно наследуется от null, то есть это конец цепочки. Примитивы напрямую не объекты, но при обращении к методам часто временно “оборачиваются” в объект-обёртку.
Откуда у строк появляются методы вроде toString()?
Строки — это примитивы, но при обращении к методу JavaScript временно оборачивает строку в объект String. Этот объект содержит методы, определённые в String.prototype. После вызова метода временный объект сразу удаляется. Поэтому методы у строк выглядят как “родные”, хотя сами строки объектами не являются.
Почему 5.toString() не работает, но 5..toString() работает?
5.toString() не работает, потому что JavaScript воспринимает точку как часть числового литерала. В результате парсер “ждёт” дробную часть числа, а не вызов метода. Вариант 5..toString() работает, потому что первая точка завершает число, а вторая используется для доступа к методу. После этого число временно оборачивается в объект Number, и метод успешно вызывается.
В каком порядке вызываются valueOf и toString?
При приведении объекта к примитиву JavaScript сначала пытается вызвать valueOf, а если он не возвращает примитив, вызывает toString. Этот порядок применяется по умолчанию для числового контекста. Если результат всё ещё не примитив, выбрасывается ошибка. Поведение строго описано в спецификации.
Рейтинг:
4
Сложность:
7
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
6
Рейтинг:
4
Сложность:
7
Рейтинг:
5
Сложность:
7