JS JavaScript  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Объекты, свойства и дескрипторы

Тест проверяет создание объектов, вычисляемые и символьные ключи, различие собственных и унаследованных свойств, работу геттеров и точные флаги дескрипторов. Отдельный блок посвящён поверхностному копированию и последствиям Object.assign, spread и Object.freeze.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов и 55 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 4 тематических шкал и объяснение каждого решения.
Вопрос 1 из 20
Какое свойство будет создано вычисляемым ключом?
JavaScript
const key = "ready";
const item = { [key]: true };
console.log(Object.keys(item)[0]);
Вопрос 2 из 20
Что выведет сокращённая запись свойства?
JavaScript
const name = "Ира";
const user = { name };
console.log(user);
Вопрос 3 из 20
Почему Object.create(null) удобен для словаря внешних ключей?
JavaScript
const dict = Object.create(null);
dict.toString = "данные";
console.log(Object.getPrototypeOf(dict));
Вопрос 4 из 20
Как получить и строковые, и символьные собственные ключи объекта?
Вопрос 5 из 20
Два поля литерала имеют одинаковый строковый ключ. Какое значение сохранится?
Вопрос 6 из 20
Что выведет optional chaining?
JavaScript
const user = {};
console.log(user.profile?.address?.city);
Вопрос 7 из 20
Как различаются оператор in и Object.hasOwn для унаследованного role?
JavaScript
const proto = { role: "guest" };
const user = Object.create(proto);
console.log("role" in user, Object.hasOwn(user, "role"));
Вопрос 8 из 20
Что произойдёт после извлечения метода?
JavaScript
"use strict";
const obj = {
  value: 7,
  read() { return this.value; }
};
const read = obj.read;
console.log(read());
Вопрос 9 из 20
Чем проверка Object.hasOwn(obj, key) лучше obj[key] !== undefined?
Вопрос 10 из 20
Когда геттер может неожиданно выполнить работу?
Вопрос 11 из 20
Какие флаги получит свойство по умолчанию?
JavaScript
const obj = {};
Object.defineProperty(obj, "id", { value: 1 });
console.log(Object.getOwnPropertyDescriptor(obj, "id"));
Вопрос 12 из 20
Что произойдёт в строгом режиме?
JavaScript
"use strict";
const obj = {};
Object.defineProperty(obj, "id", { value: 1, writable: false });
obj.id = 2;
Вопрос 13 из 20
Можно ли удалить неконфигурируемое свойство через delete в строгом режиме?
Вопрос 14 из 20
Какой дескриптор корректно задаёт вычисляемое свойство только для чтения?
Вопрос 15 из 20
Почему Object.freeze не делает вложенный объект неизменяемым?
Вопрос 16 из 20
Как Object.assign изменит target при совпадающем ключе a?
JavaScript
const target = { a: 1 };
const result = Object.assign(target, { a: 2 });
console.log(target.a);
Вопрос 17 из 20
Сколько раз сработает геттер источника?
JavaScript
let calls = 0;
const source = {
  get value() { calls++; return 5; }
};
const target = Object.assign({}, source);
console.log(calls);
Вопрос 18 из 20
Что произойдёт с вложенным массивом?
JavaScript
const source = { items: [1] };
const copy = { ...source };
copy.items.push(2);
console.log(source.items);
Вопрос 19 из 20
Какие собственные свойства переносит object spread?
Вопрос 20 из 20
Почему поверхностное объединение настроек может потерять вложенные значения?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу