@mikhailrojo

Что означает 2 this в Javascript в методе apply?

Читая книгу Ресига по Javascript, и не понимаю строчку
this.apply(this, arguments);

Получается если развернуть эту функцию. this - это фунция isPrime() это же и контекст
получается мы на функцию isPrime(как контекст) применяем ее саму же как функцию.
IsPrime.isPrime(arguments);
В чем смысл вызывания функции на самой себе? Или может быть какое то из этих this это не функция -а глобальный объект?

Function.prototype.memoized = function(key){
    this._values = this._values || {};
    return this._values[key] !== undefined ?
    this._values[key] :
    this._values[key] = <b>this.apply(this, arguments);</b>
};
function isPrime(num) {
  var prime = num != 1;
  for (var i = 2; i < num; i++) {
    if (num % i == 0) {
      prime = false;
      break;
    } 
  }
  return prime;
}

  console.log(isPrime.memoized(5),
         "The function works; 5 is prime.");
  console.log(isPrime._values[5],
         "The answer has been cached.");
</code >
  • Вопрос задан
  • 227 просмотров
Пригласить эксперта
Ответы на вопрос 1
alsopub
@alsopub
stackoverflow.com/questions/15183226/this-initiali...
Тут пишут что вот два эквиалента:
this.initialize.apply(this, arguments)
и
this.initialize(arguments[0], arguments[1], arguments[2], ...)

То есть разница в способе передачи параметров.
В первом случае они автоматически разворачиваются из массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы