Задать вопрос
@yankoyski

Как работает метод call изнутри?

Возможно ли написать функцию стандартными средствами js, которая будет работать, как метод call?
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно через apply() или bind(), но реализация стека и контекста так и останется под закрытым капотом.
Ответ написан
Комментировать
AngReload
@AngReload
Кратко о себе
Можно
// собственная реализация
Function.prototype.myCall = function(self, ...args) {
  if (self === undefined) self = window;
  const key = Symbol();
  self[key] = this;
  const result = self[key](...args);
  delete self[key];
  return result;
}

// тестируемая функция
var sum = function(a, b) {
  return this.sum + a + b;
};

// тесты
console.log(sum.call({sum: 1}, 2, 3) === 6); // true
console.log(sum.myCall({sum: 1}, 2, 3) === 6); // true


Если непонятно, что такое Symbol, то замените его на Math.random()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы