Par exemple, définissez deux méthodes d'appel pour une fonction:
La copie de code est la suivante:
fonction getInfo () {
var info = {
Message: "Message"
};
retour des informations;
}
1. Var info1 = getInfo ();
2. Var info2 = new GetInfo ();
Y a-t-il une différence entre 1 et 2? Les valeurs obtenues par info1 et info2 sont-elles les mêmes?
Le premier type est très simple et utilise beaucoup, qui consiste à exécuter une fonction, à accepter la valeur de retour de la fonction et à l'attribuer à l'objet Info1;
La deuxième situation est généralement rare. Tout d'abord, une fonction est également un objet. Il peut être instancié si l'objet est sûr (l'instance appelle réellement le constructeur de l'objet pour initialiser l'objet). Tout le deuxième cas consiste à appeler le constructeur de l'objet Fonction GetInfo et à recevoir l'instance initialisée par le constructeur (généralement ceci). Une chose plus spéciale à propos de la fonction est que si le constructeur affiche la valeur de retour, la valeur de retour sera remplacée par la valeur de retour. Ainsi, dans le deuxième cas, New GetInfo consiste à appeler le constructeur (le constructeur de la fonction est sa définition elle-même) et de recevoir les informations de valeur de retour.
application:
1. Par exemple, HTML définit l'objet DOM: <div id = "doomid"> </div>, le code JS est le suivant:
La copie de code est la suivante:
Fonction $ (Domid) {
var Dom = document.getElementById (Domid);
return Dom;
}
window.onload = function () {
var Dom1 = new $ ("Domid");
var dom2 = $ ("domind");
alert (Dom1 == DOM2);
}
Ensuite, le message de l'invite d'alerte s'affichera true. La raison pour laquelle j'utilise $ comme nom de fonction est parce que lors de l'utilisation de cette fonction, est-ce un peu comme le style de jQuery? En fait, ce style de définition de fonction est appliqué au constructeur jQuery. Que vous utilisiez nouveau ou que vous appeliez la fonction directement, la valeur renvoyée est la même.
2. Définir un objet XMLHttpRequest compatible (cet exemple est extrait de la section 18.1 du guide JavaScript faisant autorité)
Tout le monde sait que différents navigateurs peuvent soutenir différemment les communications asynchrones. Les premiers IES ont utilisé des méthodes ActiveX. Le code suivant définit un objet XMLHttpRequest compatible:
La copie de code est la suivante:
if (window.xmlhttprequest === Undefined) {
window.xmlhttprequest = function () {
essayer {
// Si disponible, utilisez la dernière version de l'objet ActiveX
return new activeXObject ("msxml2.xmlhttp.6.0");
} catch (ex1) {
essayer {
return new activeXObject ("msxml2.xmlhttp.3.0");
} catch (ex2) {
Jetez une nouvelle erreur ("XMLHttpRequest n'est pas pris en charge")
}
}
}
}
De cette façon, vous pouvez le définir directement via var xhr = nouveau xmlhttprequest (), qu'il s'agisse d'un navigateur IE ou d'un navigateur Firefox.