JavaScript-Dekoratormuster
In herkömmlichen objektorientierten Sprachen wird die Vererbung häufig verwendet, um Objekten Funktionalität hinzuzufügen. Die Vererbung kann jedoch Probleme verursachen: Wenn sich die übergeordnete Klasse ändert, ändern sich alle ihre Unterklassen entsprechend.
Wenn ein JavaScript-Skript ausgeführt wird, wirkt sich das Hinzufügen von Verhalten zu einem Objekt (oder seinem Prototyp) auf alle Instanzen des Objekts aus.
Decorator ist eine Alternative zu Vererbung, die neue Funktionen in Form überladener Methoden hinzufügt. Dieses Muster kann Ihr eigenes Verhalten vor oder nach dem Dekorator hinzufügen, um einen bestimmten Zweck zu erreichen.
Das Dekoratormuster ist eine Möglichkeit, dynamisch weitere Funktionen zu vorhandenen Funktionen hinzuzufügen. Fügen Sie jede zu dekorierende Funktion in eine separate Funktion ein und verwenden Sie diese Funktion, um die zu dekorierende Funktion zu umschließen Funktionsobjekte. Wenn also ein spezielles Verhalten ausgeführt werden muss, kann der aufrufende Code das Objekt nach Bedarf selektiv und sequentiell mit dekorativen Funktionen umschließen. Der Vorteil besteht darin, dass die Kernaufgaben der Klasse (Funktion) und der Dekorationsfunktion getrennt sind.
Wir können Werkzeugfunktionen wie folgt definieren:
Function.prototype.before = function (beforeFn) { var self = this; //保存原函数的引用 return function () { //返回包含了新函数和原函数的代理函数 beforeFn.apply(this,arguments); //执行新函数,且保证this不被劫持 return self.apply(this,arguments); //执行原函数,并返回原函数的执行结果,并保证this不被劫持 } }; Function.prototype.after = function (afterFn) { var self = this; return function () { var ret = self.apply(this,arguments); afterFn.apply(this,arguments); return ret; } };
Die Parameter beforeFn und afterFn sind hier neue Funktionen (Hinzufügen von Dekorationen), um neue Funktionen zur ursprünglichen Funktion zu erweitern Der Unterschied liegt in der Reihenfolge der Ausführung. Wenn Sie den Funktionsprototyp nicht verunreinigen möchten, können Sie die folgende Methode verwenden:
var before = function (fn, beforeFn) { return function () { beforeFn.apply(this,arguments); return fn.apply(this,arguments); } }; var after = function (fn, afterFn) { return function () { var ret = fn.apply(this,arguments); afterFn.apply(this,arguments); return ret; } };
Beispiel: Fügen Sie der HTTP-Anfrage einen Parameter hinzu, um CSRF-Angriffe zu verhindern
var ajax = function (type, url, param) { console.log(param); //发送ajax请求代码略... }; var beforeFn = function (type, url, param) { param.Token = 'Token'; }; ajax = ajax.before(beforeFn); ajax('get','http://...com/userinfo',{name:'SuFa'}); //{ name: 'SuFa', Token: 'Token' }
Durch die dynamische Dekoration der Ajax-Funktion mit dem Token-Parameter, anstatt die Parameter direkt an der Originalfunktion zu ändern, wird sichergestellt, dass die Ajax-Funktion weiterhin eine reine Funktion ist und ihre Wiederverwendbarkeit verbessert wird Modifikation. Holen Sie es sich und verwenden Sie es in anderen Projekten.
Beispiel: Formularüberprüfung (trennen Sie die Überprüfungseingabe und den Formularübermittlungscode und dekorieren Sie dann die Überprüfungseingabefunktion dynamisch, bevor das Formular gesendet wird. Auf diese Weise können wir den Überprüfungseingabeteil einfügen. Eingeschrieben (in Form eines Plug-ins und in verschiedenen Projekten verwendet)
//验证输入函数 var validata = function () { if(username.value === ''){ alert('用户名不能为空'); return false; } if(password.value === ''){ alert('密码不能为空'); return false; } }; //表单提交函数 var formSubmit = function () { var param = { username: username.value, password: password.value }; ajax('http://xxx.com/login',param); }; formSubmit = formSubmit.before(validata); submitBtn.onclick = function(){ formSubmit(); };
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich sein wird, und ich hoffe auch, dass jeder ihn unterstützt die chinesische PHP-Website.
Weitere Artikel zum JavaScript-Decorator-Muster finden Sie auf der chinesischen PHP-Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

In dem Artikel werden effektives JavaScript -Debuggen mithilfe von Browser -Entwickler -Tools, der Schwerpunkt auf dem Festlegen von Haltepunkten, der Konsole und der Analyse der Leistung erörtert.

Dieser Artikel beschreibt zehn einfache Schritte, um die Leistung Ihres Skripts erheblich zu steigern. Diese Techniken sind unkompliziert und für alle Fähigkeiten anwendbar. Bleiben Sie auf dem Laufenden: Verwenden Sie einen Paketmanager wie NPM mit einem Bundler wie Vite, um sicherzustellen

FECKERIZE ist ein vielversprechender node.js orm. Es kann mit Postgresql, MySQL, Mariadb, SQLite und MSSQL verwendet werden. In diesem Tutorial werden wir die Authentifizierung für Benutzer einer Web -App implementieren. Und wir werden Passport verwenden, die beliebte Authentifizierung Middlew

In diesem Artikel werden Sie mit der JQuery -Bibliothek ein einfaches Bildkarousel erstellen. Wir werden die BXSLIDER -Bibliothek verwenden, die auf JQuery basiert und viele Konfigurationsoptionen zum Einrichten des Karussells bietet. Heutzutage ist Picture Carousel zu einem Muss auf der Website geworden - ein Bild ist besser als tausend Wörter! Nachdem Sie sich entschieden haben, das Bild -Karussell zu verwenden, ist die nächste Frage, wie Sie es erstellen. Zunächst müssen Sie hochwertige, hochauflösende Bilder sammeln. Als nächstes müssen Sie ein Bildkarousel mit HTML und einem JavaScript -Code erstellen. Es gibt viele Bibliotheken im Web, die Ihnen helfen können, Karussell auf unterschiedliche Weise zu erstellen. Wir werden die Open -Source -BXSLIDER -Bibliothek verwenden. Die BXSLIDER -Bibliothek unterstützt reaktionsschnelles Design, sodass das mit dieser Bibliothek gebaute Karussell an alle angepasst werden kann
