Prototype, call. Откуда берется второй undefined?

89
24 февраля 2022, 12:20

Изучаю прототипы и добавляю к ним методы [call, bind, apply] и столкнулся с такой фичей. Не понимаю откуда берется undefined.
Растолкуйте пожалуйста.

function greet() { 
  console.log(`Hello! My name is ${this.name}, I'm ${this.job}`); 
} 
 
function Person(name, job) { 
  this.name = name; 
  this.job = job; 
} 
 
Person.prototype.greet = function() { 
  return greet.call(this); 
} 
 
const person = new Person('Richard', 'developer'); 
 
console.log(person.greet());

Answer 1

У вас функция greet ничего не возвращает потому что.
Добавить return и получите, что и ожидали

function greet() { 
  return(`Hello! My name is ${this.name}, I'm ${this.job}`); 
} 
 
function Person(name, job) { 
  this.name = name; 
  this.job = job; 
} 
 
Person.prototype.greet = function() { 
  return greet.call(this); 
} 
 
const person = new Person('Richard', 'developer'); 
 
console.log(person.greet());

READ ALSO
Обобщенный список List

Обобщенный список List

Как правильно поступить, у меня есть интерфейс(ICommon<T>), есть его несколько реализаций (HelloInt:ICommon<int>, HelloDouble:ICommon<double>)Теперь я хотел...

169
Найти количество неверных ударений в тексте

Найти количество неверных ударений в тексте

Учительница задала Пете домашнее задание — в заданном тексте расставить ударения в словах, после чего поручила Васе проверить это домашнее...

98
Как выделить элемент ListBox другим цветом

Как выделить элемент ListBox другим цветом

В ListBox загонятеся отсортированный массив с числами по убываниюКак можно можно выделить первые 3 элемента другим цветом

142