Vergleichen Sie ein Objekt, das mit einem Objektliteral erstellt wurde, mit einem Objekt, das mit dem Aufdeckungsmodulmuster erstellt wurde.
Hier wird ein Objekt als Literal erstellt.
%Vor%Wenn Sie die öffentliche Methode %code% für das zurückgegebene Objekt überschreiben, übernimmt die %code% -Methode, die von %code% abhängt, die Änderung. Dies liegt daran, dass im Objekt-Literal-Stil Verweise auf öffentliche Funktionen über %code% , das zurückgegebene Objekt, erstellt werden.
Wenn Sie jedoch das Enthüllungsmodulmuster verwenden,
%Vor%Der RMP-Greeter wird die Überschreibung für die öffentliche %code% -Methode nicht übernehmen. Dies liegt daran, dass RMP-Funktionen, die auf andere Funktionen verweisen (sowohl öffentliche als auch private), auf die private Abschlusskopie und nicht auf die öffentliche Funktion verweisen, die dem zurückgegebenen Objekt zugeordnet ist.
Aus diesem Grund betrachte ich das Aufdecken des Modulmusters als Anti-Pattern.
Ein Nachteil dieses Musters ist, dass wenn eine private Funktion auf eine öffentliche Funktion verweist, diese öffentliche Funktion nicht überschrieben werden kann, wenn ein Patch notwendig ist. Dies liegt daran, dass die private Funktion weiterhin auf die private Implementierung verweist und das Muster nicht auf öffentliche Elemente, sondern nur auf Funktionen angewendet wird.
Hat jemand ein Beispiel dafür, was er damit meint?
Ich würde %code% an dieses binden, was anscheinend auf den in RMP zurückgegebenen Inhalt zeigt.
%Vor%Ich bevorzuge das jedoch:
%Vor%