Возникнет TypeError: member.getFullName не является функцией. Метод добавлен самому конструктору Person, а экземпляры ищут общие методы в Person.prototype.
Какой результат выведет console.log при вызове getFullName у созданного объекта
Возникнет TypeError: member.getFullName не является функцией. Метод добавлен самому конструктору Person, а экземпляры ищут общие методы в Person.prototype.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Предсказать, что будет напечатано в консоль после выполнения следующего JavaScript‑кода.
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const member = new Person('Example1', 'Example2');
Person.getFullName = function () {
return `${this.firstName} ${this.lastName}`;
}
console.log(member.getFullName());
// ??
Ответ
Возникнет TypeError: member.getFullName не является функцией. Метод добавлен самому конструктору Person, а экземпляры ищут общие методы в Person.prototype.
Исправление:
Person.prototype.getFullName = function () {
return `${this.firstName} ${this.lastName}`;
};
console.log(member.getFullName()); // Example1 Example2
Это работает и для уже созданного member: его прототип — тот же объект Person.prototype. Статический Person.getFullName автоматически экземпляру не передаётся. Сам вызов console.log в исходнике не получает строку, потому что вычисление его аргумента завершается ошибкой.