Heim  >  Artikel  >  Web-Frontend  >  Verständnis des neuen Funktionsnamens () zum Definieren einer Funktion_Grundkenntnisse

Verständnis des neuen Funktionsnamens () zum Definieren einer Funktion_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:47:171396Durchsuche

Definieren Sie beispielsweise zwei Aufrufmethoden einer Funktion:

Code kopieren Der Code lautet wie folgt:

function getInfo () {
var info = {
message: "message"
};
return info;

1, var info1 = getInfo() ;

2. var info2 = new getInfo();

Gibt es einen Unterschied zwischen 1 und 2? Sind die von info1 und info2 erhaltenen Werte gleich?

Die erste Möglichkeit besteht darin, eine Funktion auszuführen, den Rückgabewert der Funktion zu akzeptieren und ihn dem info1-Objekt zuzuweisen.

Die zweite Situation ist im Allgemeinen selten . . Erstens ist eine Funktion auch ein Objekt, und das Objekt kann definitiv instanziiert werden (bei der Instanziierung wird tatsächlich der Konstruktor des Objekts aufgerufen, um das Objekt zu initialisieren). (normalerweise dies), und eine Besonderheit der Funktion besteht darin, dass, wenn der Konstruktor einen angezeigten Rückgabewert hat, der Rückgabewert verwendet wird, um dieses Objekt zu ersetzen. Im zweiten Fall besteht new getInfo also darin, den Konstruktor aufzurufen (der Konstruktor der Funktion ist ihre Definition selbst) und die Rückgabewertinformationen zu empfangen.

Anwendung:

1. HTML definiert beispielsweise das DOM-Objekt:
, der js-Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:
function $(domId) {
var dom = document.getElementById(domId);
return dom;}

window.onload = function() {
var dom1 = new $("domId"); dom2 = $("domId") ;
alert(dom1 == dom2);
}


Die Warnmeldung wird „true“ angezeigt. Der Grund, warum $ als Funktionsname verwendet wird, liegt darin, dass diese Funktion bei Verwendung ein wenig wie jQuery aussieht? Tatsächlich verwendet der Konstruktor von jQuery diesen Stil der Funktionsdefinition. Unabhängig davon, ob Sie new verwenden oder die Funktion direkt aufrufen, ist der zurückgegebene Wert derselbe.
2. Definieren Sie ein kompatibles XMLHttpRequest-Objekt (dieses Beispiel stammt aus Abschnitt 18.1 des Javascript Authoritative Guide)
Jeder weiß, dass verschiedene Browser die asynchrone Kommunikation auf unterschiedliche Weise unterstützen können , definiert der folgende Code ein kompatibles XMLHttpRequest-Objekt:



Code kopieren Der Code lautet wie folgt: if (window.XMLHttpRequest === undefiniert) {
window.XMLHttpRequest = function() {
try {
//Wenn verfügbar, verwenden Sie die neueste Version des ActiveX-Objekts
neues ActiveXObject zurückgeben ("Msxml2.XMLHTTP.6.0");
} Catch (ex1) {
try {
return new ActiveXObject("Msxml2.XMLHTTP.3.0");
} Catch (ex2) {
throw new Error("XMLHttpRequest wird nicht unterstützt")
}
}
}
}


Auf diese Weise können Sie var xhr = new direkt übergeben XMLHttpRequest() ist definiert, unabhängig davon, ob es sich um IE oder Firefox handelt.
Stellungnahme:
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