


Austausch von Ideen zur Implementierung der Abhängigkeitsinjektion in JavaScript_Javascript-Kenntnissen
Heutzutage wird jedes Framework modularisiert, selbst Front-End-Javascript ist keine Ausnahme. Jedes Modul ist für bestimmte Funktionen verantwortlich und es bestehen gegenseitige Abhängigkeiten zwischen den Modulen. Es stellt sich also die Frage: Wie implementiert man die Abhängigkeitsinjektion in JavaScript? (Die Abhängigkeitsinjektion von JavaScript hat entsprechende Implementierungen in allen wichtigen Frameworks. Hier lernen wir nur die Implementierungsideen)
Die folgenden Anforderungen:
Angenommen, es gibt bereits einen definierten Servicemodul-Schlüsselwertsatz, func ist der neu hinzugefügte Service und die Parameterliste ist die Serviceabhängigkeit.
var services = { abc : 123, def : 456, ghi : 789 } // Angenommen, dass ein Service
definiert wurde Funktion Service(abc, ghi){
This.write = function(){
console.log(abc);
console.log(ghi);
}
}
Funktion Activitor(func){
var obj;
// Implementieren
Rückgabe obj;
}
Lösung:
Nehmen Sie durch einen Mechanismus (Reflexion?) die durch die Funktion definierte Parameterliste heraus und weisen Sie nacheinander Werte zu. Dann instanziieren Sie die Funktion durch einen Mechanismus (Aktivator?).
Lösung:
1. Rufen Sie die Parameterliste der Funktion ab:
Wie erhalte ich die Parameterliste? Das erste, was mir in den Sinn kommt, ist der Reflexionsmechanismus. Gibt es also eine Reflexion in Javascript? Derzeit weiß ich nur, wie man die Funktion eval(str) verwendet, aber es scheint, dass es keine relevante Implementierung zum Abrufen der Parameterliste gibt. Wenn Sie sich die Definition von func.arguments noch einmal ansehen, ist diese Eigenschaft nur gültig, wenn func aufgerufen und Parameter übergeben werden, und kann die Anforderungen nicht erfüllen.
Können wir die Parameterliste erhalten, indem wir den String nach func.toString() verarbeiten?
Legen Sie los und probieren Sie es aus:
Funktion getFuncParams(func) {
var matches = func.toString().match(/^functions*[^(]*(s*([^)]*))/m);
If (matches && matches.length > 1)
return matches[1].replace(/s*/, '').split(','
Geben Sie [];
zurück };
Zu diesem Zeitpunkt wird das Funktionsparameterlistenarray erhalten.
2. Abhängigkeiten anhand der Parameterliste finden:
Nachdem die Parameterliste, also die Abhängigkeitsliste, abgerufen wurde, ist es sehr einfach, die Abhängigkeiten als Parameter zu übergeben.
var params = getFuncParams(func);
for (var i in params) {
params[i] = Dienste[params[i]];
}
3. Abhängigkeitsparameter übergeben und instanziieren:
Wir wissen, dass es in Javascript zwei Funktionen namens func.constructor gibt: call(thisArg,[arg[,arg,[arg,[…]]]]) und apply(thisArg,args…), die beide können Funktionsoperation instanziiert werden. Der erste Parameter der Aufruffunktion ist dieser Zeiger, der Rest ist die Parameterliste. Dies eignet sich zur Verwendung, wenn die Funktionsparameterliste bekannt ist, aber nicht meinen Anforderungen entspricht. Wenn Sie sich die zweite Apply-Funktion ansehen, ist der erste Parameter ebenfalls dieser Zeiger und der zweite Parameter das Parameter-Array. Wenn er aufgerufen wird, weist er der Parameterliste von func automatisch nacheinander Werte zu, die genau meinen Anforderungen entsprechen Bedürfnisse.
Der Code lautet ungefähr wie folgt:
function Activitor(func){
var obj = {};
func.apply(obj, params);
Rückgabe obj;
}
An diesem Punkt können wir eine Instanz der Funktion erstellen und die für die Funktion erforderlichen Parameter übergeben.
4. Drucken und testen:
Vollständiger Code:
var
// Gehe davon aus, dass ein Service
definiert wurde Dienste = { abc: 123, def: 456, ghi: 789 },
// Parameterliste von func (Abhängigkeitsliste) abrufen
GetFuncParams = Funktion (func) {
var matches = func.toString().match(/^functions*[^(]*(s*([^)]*))/m);
If (matches && matches.length > 1)
return matches[1].replace(/s /, '').split(',');
return [];
},
// Füllen Sie Parameter (Abhängigkeiten) basierend auf der Parameterliste (Abhängigkeitsliste) aus
setFuncParams = Funktion (params) {
for (var i in params) {
params[i] = services[params[i]];
}
Parameter zurückgeben;
};
// Aktivator
function Activitor(func) {
var obj = {};
func.apply(obj, setFuncParams(getFuncParams(func)));
Rückgabe obj;
}
//Neuen Dienst definieren
Funktion Service(abc, ghi) {
This.write = function () {
console.log(abc);
console.log(ghi);
}
}
// Dienst instanziieren und Methode aufrufen
var service = Activitor(Service);
service.write();
Die Konsole wird erfolgreich gedruckt!

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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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



So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann

In Go wird der Abhängigkeitsinjektionsmodus (DI) durch die Übergabe von Funktionsparametern implementiert, einschließlich der Übergabe von Werten und Zeigern. Im DI-Muster werden Abhängigkeiten typischerweise als Zeiger übergeben, um die Entkopplung zu verbessern, Sperrenkonflikte zu reduzieren und die Testbarkeit zu unterstützen. Durch die Verwendung von Zeigern wird die Funktion von der konkreten Implementierung entkoppelt, da sie nur vom Schnittstellentyp abhängt. Durch die Zeigerübergabe wird auch der Overhead für die Übergabe großer Objekte reduziert, wodurch Sperrenkonflikte reduziert werden. Darüber hinaus erleichtert das DI-Muster das Schreiben von Komponententests für Funktionen mithilfe des DI-Musters, da Abhängigkeiten leicht simuliert werden können.
