revealing-module-pattern

___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ qstnhdr ___ Was ist mit "public function kann nicht überschrieben werden, wenn ein Patch notwendig ist." in Addys Beschreibung des Revealing Module Patterns? ___ answer21932064 ___

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.

    
___ qstntxt ___
  

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?

Verknüpfen Sie mit dem oben aufgezeigten Modulmodulmuster

    
___ tag123revealingmodulemodule ___ Das Aufdeckende Modulmuster ist ein aktualisiertes Modulmuster, in dem Sie alle Ihre Funktionen und Variablen im privaten Bereich definieren und ein anonymes Objekt am Ende des Moduls zusammen mit Zeigern sowohl der privaten Variablen als auch der Funktionen, die Sie aufdecken wollen, zurückgeben als öffentlich. ___ answer28675846 ___

Ich würde %code% an dieses binden, was anscheinend auf den in RMP zurückgegebenen Inhalt zeigt.

%Vor%

Ich bevorzuge das jedoch:

%Vor%     
___
2
Antworten

Was ist mit "public function kann nicht überschrieben werden, wenn ein Patch notwendig ist." in Addys Beschreibung des Revealing Module Patterns?

   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 wei...
21.02.2014, 05:07