Definieren Sie beispielsweise zwei aufrufende Methoden für eine Funktion:
Die Codekopie lautet wie folgt:
Funktion getInfo () {
var info = {
Nachricht: "Nachricht"
};
Info zurückgeben;
}
1. var info1 = getInfo ();
2. var info2 = neu getInfo ();
Gibt es einen Unterschied zwischen 1 und 2? Werden die Werte von info1 und info2 gleich erhalten?
Der erste Typ ist sehr einfach und verwendet viel, nämlich eine Funktion auszuführen, den Rückgabewert der Funktion zu akzeptieren und dem Info1 -Objekt zuzuweisen.
Die zweite Situation ist im Allgemeinen selten. Zunächst ist eine Funktion auch ein Objekt. Wenn das Objekt sicher ist, kann es instanziiert werden (Instanz wird tatsächlich den Konstruktor des Objekts aufrufen, um das Objekt zu initialisieren). Der zweite Fall besteht darin, den Konstruktor des GetInfo -Funktionsobjekts aufzurufen und die vom Konstruktor initiierte Instanz zu empfangen (normalerweise). Eine besondere Sache an der Funktion ist, dass der Rückgabewert durch den Rückgabewert ersetzt wird, wenn der Konstruktor den Rückgabewert anzeigt. Im zweiten Fall soll New GetInfo den Konstruktor aufrufen (der Konstruktor der Funktion ist seine Definition selbst) und die Rückgabewertinformationen zu empfangen.
Anwendung:
1. Zum Beispiel definiert HTML das DOM -Objekt: <div id = "domid"> </div>, der JS -Code lautet wie folgt:
Die Codekopie lautet wie folgt:
Funktion $ (domid) {
var dom = document.getElementById (domid);
return dom;
}
window.onload = function () {
var dom1 = new $ ("domid");
var dom2 = $ ("domid");
alert (DOM1 == DOM2);
}
Anschließend zeigt die Alarm -Eingabeaufforderung -Nachricht True an. Der Grund, warum ich $ $ als Funktionsname verwende, ist, dass bei der Verwendung dieser Funktion ein bisschen wie Jquerys Stil ist? Tatsächlich wird dieser Funktionsstil auf den Jquery -Konstruktor angewendet. Unabhängig davon, ob Sie die Funktion neu verwenden oder direkt aufrufen, ist der zurückgegebene Wert der gleiche.
2. Definieren Sie ein kompatibles XMLHTTPrequest -Objekt (dieses Beispiel ist aus Abschnitt 18.1 des maßgeblichen JavaScript -Handbuchs)
Jeder weiß, dass verschiedene Browser die asynchrone Kommunikation unterschiedlich unterstützen können. Frühe IES verwendeten ActiveX -Methoden. Der folgende Code definiert ein kompatibles XMLHTTPREQUEST -Objekt:
Die Codekopie lautet wie folgt:
if (window.xmlhttprequest === undefined) {
window.xmlhttprequest = function () {
versuchen {
// Wenn verfügbar, verwenden Sie die neueste Version des ActiveX -Objekts
return New ActiveXObject ("msxml2.xmlhttp.6.0");
} catch (ex1) {
versuchen {
return New ActiveXObject ("msxml2.xmlhttp.3.0");
} catch (ex2) {
Neuen Fehler werfen ("xmlhttprequest wird nicht unterstützt")
}
}
}
}
Auf diese Weise können Sie es direkt über var xhr = neu definieren, unabhängig davon, ob es sich um einen Browser oder einen Firefox -Browser handelt.