Тесты по ООП

Тесты по ООП №1

Объяснения по тесту 1:

Код в вопросе создает два объекта text и text2, где text2 наследует свойства и методы от text через свойство __proto__.

В конце вызывается метод out() на объекте text2, он ищет свойство out() в text2. Так как такого свойства у text2 нет, то JavaScript ищет его в text, который является прототипом text2. Метод out() найден, поэтому он вызывается. В итоге в консоль выводится строка «black».

Данный код создает два объекта text и text2. Объект text содержит свойства numb, color и метод out, который выводит свойство color объекта, на который ссылается ключевое слово this. Объект text2 создается на основе объекта text с помощью наследования через __proto__.

Далее свойству color объекта text2 присваивается новое значение ‘white’, и вызывается метод out(). Метод out() уже выводит значение ‘white’.

Данный код создает объект text с тремя свойствами: numb, color и методом out, который может выводить значение свойства color объекта text в консоль. Затем создается объект text2 с одним свойством size и прототипом text.

В строке text = ‘2’ происходит переопределение переменной text на значение ‘2’, что не влияет на объект text2.

В строке console.log(text2.numb) выводится значение свойства numb объекта text2, которое равняется 1, поскольку это свойство наследуется из объекта text.

Метод hasOwnProperty() проверяет, содержит ли объект определенное свойство, и возвращает логическое значение true или false.

В коде вопроса метод вернет false, потому что свойство «color» находится в прототипе объекта text2.

Если бы свойство «color» было определено именно в объекте text2, то метод hasOwnProperty() вернул бы true.

Код создает класс Color, который имеет конструктор, который принимает аргумент color и присваивает его свойству color создаваемого объекта.

Затем создается новый объект newColor, экземпляр класса Color, у которого свойство color равно ‘red’ (с учетом того, что передаваемый аргумент содержит строку с пробелами в начале). В конце кода выводится объект newColor в консоль:

Color {color: ‘   red’}

Код создает класс Person с конструктором, который принимает параметр username и инициализирует его как свойство объекта. Класс также имеет метод tHello, который может выводить в консоль строку, состоящую из свойства username, строки «3» и » Hello».

Потом, создается экземпляр класса Person с именем «jerry», которому в конструктор передается строка «Jerry». Затем вызывается метод tHello() на объекте jerry, который выводит в консоль строку «Jerry3 Hello».

Правильный ответ class Dog extends Animal

В коде определяется два класса Animal и Dog, используя механизм наследования в объектно-ориентированном программировании. Класс Dog является дочерним для класса Animal, и имеет доступ к его свойствам и методам через вызов функции super(). В данном случае конструктор Dog вызывает конструктор Animal с аргументом name, переданным в конструктор Dog. Метод speak класса Dog определяет функциональность, которую имеют только объекты класса Dog.

В конце вызывается метод speak(), который выводит в консоль строку ‘Woof’.

В коде определяется класс Person со свойствами username и numb, а также методом validationName(), который возвращает длину имени пользователя, если его длина больше 2 символов, иначе возвращает false.

Далее создается объект coworker1 класса Person с именем «Tom» и номером «22467».

После вызывается метод validationName() для объекта coworker1, который выводит длину имени пользователя «Tom», она больше 2 символов, поэтому в консоли будет выведено число 3.

Правильный ответ — Не рекомендуется.

В коде указано приватное свойство _color, которое можно изменить, вызвав его напрямую, например nColor._color = ‘red’. Однако использование приватных свойств напрямую НЕ РЕКОМЕНДУЕТСЯ, поскольку это может привести к непредсказуемому поведению объекта. Вместо этого необходимо использовать геттеры и сеттеры для чтения и записи значения свойства.

В коде создается класс Color с методами set и get для свойства color, которое устанавливается в приватную переменную _color. Метод set может устанавливать значение свойства color, приводя его к нижнему регистру с помощью метода toLowerCase(). Метод get может возвращать значение приватной переменной _color.

Далее создается экземпляр nColor класса Color. Значение свойства color устанавливается через метод set в строку «WHITE», которая в результате обработки методом toLowerCase() становится строкой «white». Затем значение свойства color (уже имеет значение «white») выводится в консоль с помощью метода get.

Вызов console.log(this) в зависимости от контекста выполнения кода может указывать на разные объекты. В браузерной среде выполнения кода это будет глобальный объект Window, а в среде Node.js это будет глобальный объект global. Если вызов console.log(this) происходит внутри какой-то функции, то this будет зависеть от того, как эта функция была вызвана (к примеру, в случае вызова метода объекта, this указывает на этот объект). Если вызов console.log(this) происходит в глобальной области видимости, то this указывает на глобальный объект.

Код добавляет обработчик события «click» к первому элементу «h1» на странице, который изменяет его фон на черный цвет при клике. Внутри функции обработчика, ключевое слово «this» ссылается на элемент «h1» на который был добавлен обработчик события. Таким образом, код устанавливает стиль элемента, на который кликнули.

Код пытается назначить обработчик события «click» на первый найденный элемент h1 на странице, но использует стрелочную функцию вместо функции. Из-за того, что стрелочные функции не имеют своего собственного контекста this, this внутри этой функции ссылается на контекст внешней функции или глобальный объект (в зависимости от того, где функция была определена). В нашем случае, this будет ссылаться на глобальный объект (обычно это объект window в браузере), так что код вызовет ошибку.

В коде устанавливается обработчик события ‘click’ на элемент h1 с помощью метода addEventListener(). Когда происходит клик на элементе, вызывается функция color(), которая устанавливает цвет текста элемента h1 на красный, используя this для доступа к элементу h1.

Правильный ответ super(username);

В коде определяется два класса: Person и Autor. Класс Autor наследует свойства и методы класса Person с помощью ключевого слова extends.

Класс Person имеет конструктор, который инициализирует свойство username объекта, и метод tHello(), который выводит в консоль строку со значением свойства username.

Класс Autor также имеет конструктор, который принимает два аргумента: username и email. В конструкторе класса Autor используется метод super() для вызова конструктора класса Person, чтобы установить свойство username из класса Person. Затем конструктор класса Autor устанавливает свойство email.

В конце кода создается новый объект autor1 класса Autor и выводятся в консоль его свойства username и email.