Heim > Web-Frontend > js-Tutorial > Hauptteil

Konzepte und Codebeispiele für JavaScript-Singleton-Muster

黄舟
Freigeben: 2017-03-04 15:13:37
Original
1032 Leute haben es durchsucht

Vorwort

Wie andere Programmiersprachen verfügt auch Javascript über viele Entwurfsmuster, wie z. B. Singleton-Modus, Proxy-Modus, Beobachtermodus usw. Kompetente Verwendung von Javascript-Entwurfsmuster können unsere Codelogik klarer und einfacher zu warten und umzugestalten machen.

In diesem Artikel wird der häufigere und praktischere Modus im Javascript-Modus vorgestellt – der Singleton-Modus, der hauptsächlich in Konzepte und Beispiele unterteilt ist. Bei der Einführung von Beispielen werden auch zusätzliche Wissenspunkte im Code erläutert.

Konzept des Singleton-Musters

Was ist zunächst einmal ein Singleton-Muster? Dies kann folgendermaßen verstanden werden: Das Singleton-Muster zielt darauf ab, sicherzustellen, dass eine Klasse nur eine Instanz hat und einen globalen Zugriffspunkt bereitstellt.

Vielleicht verstehen einige Leute das Konzept von Singleton immer noch nicht, also können Sie sich einige Beispiele aus dem Leben vorstellen. Wenn beispielsweise bei der Registrierung eines Kontos das von uns registrierte Konto bereits existiert, werden wir vom System gefragt: „Das Konto existiert bereits. Möchten Sie dieses Konto zum Anmelden verwenden?“ Wir können kein identisches Konto erneut erstellen, es sei denn, wir kündigen das ursprüngliche Konto. Dies ist eine anschauliche Verkörperung des Singleton-Musters.

Ein ähnliches Beispiel ist das Anmelde-Popup-Fenster auf der Webseite. Unabhängig davon, wie oft wir auf die Anmeldeschaltfläche klicken, wird immer nur ein Anmelde-Popup-Fenster auf der Benutzeroberfläche angezeigt man kann nicht erschaffen werden.

In diesem Artikel wird das Anmelde-Popup-Fenster als Beispiel verwendet, um die Verwendung des Singleton-Modus vorzustellen.

Singleton-Modus-Instanz

1.Demo-Anzeige

Die Demo-Adresse lautet: Pop-up-Box-Instanz

2. Codeanzeige

Der Code zum Erstellen einer Popup-Box-Instanz im Singleton-Modus kann von jedem anders geschrieben werden, aber der Zweck ist derselbe: eine weltweit einzigartige und zugängliche Popup-Box zu erstellen. Als nächstes setzen wir dieses Beispiel Schritt für Schritt um.

(1) Holen Sie sich das DOM-Objekt

var $ = function(id) {
    return typeof id === 'string' ? document.getElementById(id) : id; 
};
Nach dem Login kopieren

Um einige nachfolgende Vorgänge am DOM zu erleichtern, verwenden wir zunächst das Funktionsprinzip Programmieren, um die Ziel-ID zu erhalten. Die Elementobjektmethode ist gekapselt und kann direkt mit $(id) abgerufen werden.

(2) Popup-Frame-Konstruktor

var Modal = function(id, html) {
    this.html = html;
    this.id = id;
    this.open = false;
};
Nach dem Login kopieren

Hier deklarieren wir ein Modal als Konstruktor des Popup-Frames und definieren das öffentliche Attribut html darin, id und offen. HTML wird verwendet, um den Inhalt innerhalb des Popup-Felds zu definieren, id wird verwendet, um den ID-Namen für das Popup-Feld zu definieren, und open wird verwendet, um zu bestimmen, ob das Popup-Feld geöffnet ist.

(3) offene Methode

Modal.prototype.create = function() {
    if (!this.open) {
        var modal = document.createElement('p');

        modal.innerHTML = this.html;
        modal.id = this.id;
        document.body.appendChild(modal);

        setTimeout(function() {
            modal.classList.add('show');
        }, 0);

        this.open = true;
    }
};
Nach dem Login kopieren

Wir definieren die Erstellungsmethode in der Prototypenkette von Modal. Innerhalb der Methode erstellen wir eine Popup-Box und fügen sie ein Fügen Sie dem DOM gleichzeitig einen Animationseffekt mit der Klasse „show“ hinzu. Hier ist eine kurze Einführung in classList:

classList ist ein praktischeres Attribut zum Bedienen der Elementklasse als className, ist jedoch hinsichtlich der Kompatibilität nicht mit Versionen unter IE10 kompatibel:

Die bereitgestellten Klassenoperationsmethoden ähneln denen von jQuery und umfassen hauptsächlich

  • add(class1, class2, …), um einen oder mehrere Klassennamen hinzuzufügen Das Element entfernt, ähnlich wie addClass()

  • remove(class1, class2, …) von jQuery, einen oder mehrere Klassennamen aus dem Element, ähnlich wie removeClass()

    <🎜 von jQuery >
  • contains(class) Bestimmt, ob der angegebene Klassenname existiert, ähnlich wie hasClass() von jQuery

Hier verwenden wir die Add-Methode, um die Show-Klasse zu Modal hinzuzufügen .

(4) Close-Methode

Modal.prototype.delete = function() {
    if (this.open) {
        var modal = $(this.id);

        modal.classList.add(&#39;hide&#39;); 
        setTimeout(function() {
            document.body.removeChild(modal);
        }, 200);

        this.open = false;
    }
};
Nach dem Login kopieren
Nachdem wir die Open-Methode definiert haben, definieren wir hier eine Methode zum Schließen des Popup-Fensters und fügen die Hide-Klasse hinzu Fügen Sie dem darin enthaltenen Popup-Box-Objekt einen Animationseffekt hinzu und entfernen Sie schließlich das Popup-Objekt auf der Seite.

(5) Erstellen Sie eine Instanz

var createIntance = (function() {
    var instance;
    return function() {
        return instance || (instance = new Modal(&#39;modal&#39;, &#39;这是一个弹框&#39;))
    }
})();
Nach dem Login kopieren
Dies ist ein wichtiger Teil der Implementierung des Singleton-Musters:

  1. Verwenden Sie

    Schließung, um die private Instanzvariable zu kapseln und eine Funktion zurückzugeben

  2. Verwenden Sie die ||-Syntax, um festzustellen, ob die Instanz nicht vorhanden ist. Führen Sie die modale Methode der letzten Instanz aus. Wenn sie vorhanden ist, wird die Instanz direkt zurückgegeben, um sicherzustellen, dass nur eine Popup-Instanz vorhanden ist

Die Erstellung dieser Instanz kann auch als Teil verstanden werden des Proxy-Modus.

(6) Schaltflächenbedienung

var operate = {
    setModal: null,
    open: function() {
        this.setModal = createIntance();
        this.setModal.create();
    },
    delete: function() {
        this.setModal ? this.setModal.delete() : &#39;&#39;;
    }
};
Nach dem Login kopieren
Hier fügen wir die Schaltflächenbedienung in das Betriebsobjekt ein, damit die Öffnungs- und Schließoperationen dadurch die Instanz setModal erhalten können .

(7) Bindungsereignisse

$(&#39;open&#39;).onclick = function() {
    operate.open();
};

$(&#39;delete&#39;).onclick = function() {
    operate.delete();
};
Nach dem Login kopieren
Schließlich binden wir die Methoden zum Öffnen und Löschen an die beiden Schaltflächen. Bisher haben wir es im Singleton-Modus implementiert Popup-Demo ist implementiert.

Bitte sehen Sie sich den vollständigen Code an: Vollständiger Code

Fazit

Das Obige ist der Inhalt des JavaScript-Singleton-Modus-Konzepts und Codebeispiele. Weitere verwandte Inhalte finden Sie hier zur chinesischen PHP-Website (www.php.cn)!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!