Сомнения в JavaScript применимы - функция памятки
Я борюсь с примером js памятки, найденной в книге, вот код:
Function.prototype.memoized = function(key){
this._values = this._values || {};
return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);
}
вотиграть на скрипке с полным примером
что я на самом деле не понимаю, как работает этот кусок кода и что он делает, в частности,apply
часть:
return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);
Я знаю и понимаю какapply
работает
Метод apply () вызывает функцию с заданным значением this и аргументами, представленными в виде массива.
Предположим, чтоthis._values[key]
равноundefined
, тогда возвращаемое значение будетthis.apply(this, arguments)
: этот код перезапускаетmemoized
функционировать? Я попытался добавить несколько журналов внутри функции, чтобы увидеть, сколько раз вызывается функция, но кажется, что она была запущена только один раз ..
Может кто-нибудь дать мне подсказку? Это, вероятно, глупый вопрос, пожалуйста, будьте терпеливы, спасибо