@yankoyski

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

Возможно ли написать функцию стандартными средствами js, которая будет работать, как метод call?
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 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()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект