Die Umsetzung und das Verständnis "memoize" - Funktion unterstreichen & lodash

Habe versucht zu lernen, mehr über die funktionale Programmierung, indem man die Unterstrich-Dokumentation und Versuch zu schreiben, meine eigenen Versionen der am häufigsten verwendeten Funktionen.

Kommen über "memoize" - ich hatte Probleme beim wickeln meinem Kopf herum, und fand einige Informationen, die in Crockford 's" Die Guten Teile".

  _.memoize = function(func) {
    //'cache' object is used to hold the result of the memoized fn's call
    var cache = {};
    var recur = function(n) {
      var result = cache[n];
      if (typeof result === 'undefined') {
        result = func.apply(this, arguments);
        cache[n] = result;
      }
      return result;
    }
    return recur;
  };

Könnten Sie mir bitte helfen zu verstehen, wenn mein Gebrauch .bewerben war noch nötig und wenn es eine core-Verbesserung, die ich machen kann, um diesen code? Wirklich zu schätzen die Hilfe!

  • Ja, die Verwendung von apply ist notwendig, weil Sie nicht wissen, wie viele Argumente func haben
  • So dass der code, den du geschrieben hast selber? Und es gibt nichts, was Sie nicht verstehen, über es? Oder welche Teile Unterstrich verstehen Sie nicht?
  • Ich war in der Lage zu gelangen bei dieser Lösung ist, aber ich wollte sehen, ob es irgendwelche Fehler oder Verbesserungen, die ich machen könnte. Wie ich unten erwähnt habe ich seitdem geändert, die Verwendung von typeof und verlassen Sie sich auf hasOwnProperty statt. Jedoch, ich versuche, herauszufinden, wie kann ich verhindern, dass die memoized Funktion ausführen, die mehr Zeit als es braucht.
  • Vielleicht war die Frage besser gestellt werden auf Code Überprüfen dann. Aber es ist OK.
InformationsquelleAutor tsaiDavid | 2015-09-12
Schreibe einen Kommentar