Cause
J'ai utilisé Prototype.js ce jour-là, alors je l'ai ouvert pour voir que j'ai vu quelques lignes et brumeux.
fragment de code propotype.js
Le code est le suivant:
var class = {
Create: function () {
Return function () {
this.Initialize.apply (ceci, arguments);
}
}
}
// La méthode d'utilisation des classes est la suivante
var a = class.create ();
A. Prototype = {
initialiser: fonction (v) {
ce.
}
showValue: function () {
alerte (this.value);
}
}
var a = new a ('helloord!');
a.
l Initialiser?
Que fait la méthode L applique?
L Variable des arguments?
L Pourquoi la méthode initialisée est-elle exécutée après un nouveau A?
Trouvez la réponse:
Deuxièmement, js ciblant l'objet
Qu'est-ce que l'initialisation?
C'est juste une variable, représentant une méthode, et l'utilisation est le constructeur de la classe.
La fonction spécifique est prise en charge par JS, alors quel est l'objet de JS? Quel est le même et différent de Java?
Regardez le code:
Le code est le suivant:
Copier le code du code comme suit:
var classname = function (v) {{
this.value = v;
this.getValue = function () {
Renvoyez cette valeur;
}
this.setValue = fonction (v) {
this.value = v;
}
}
Alors, quelle est la différence entre les fonctions et les classes dans JS?
En fait, c'est le même.
comme
Le code est le suivant:
Var objectName1 = new className ("a");
Parmi eux, ObjectName1 est un objet obtenu après avoir effectué le constructeur ClassName, et cela dans la fonction ClassName fait référence à l'objet construit après le nouveau, donc ObjectName1 aura un attribut et deux méthodes après ce qui suit. Vous pouvez les appeler à travers ceci:
Le code est le suivant:
objectName1.setValue ('' Hello '');
Alerte (objectName1.getValue ());
Alerte (objectName1.value);
Donc
Le code est le suivant:
var objectName2 = className ("b");
Alors, qu'obtient ObjectName2? De toute évidence, la valeur de retour de la méthode, ici ClassName n'est utilisée que comme fonction ordinaire (bien que la première lettre soit capitalisée). Mais il n'y a pas de valeur de retour dans le nom de classe précédent, donc ObjectName2 ne sera pas indifeté, alors qui donne "B"? Il n'y a pas d'objet ici, mais il suffit de réaliser cette méthode, donc ce "B" est affecté à la fenêtre d'objet qui appelle cette méthode.
var objectName2 = className ("b");
alerte (fenêtre.Value);
Ainsi, toutes les fonctions en JS sont les mêmes, mais l'utilisation peut être différente (utilisée pour construire des objets ou exécuter un processus).
Revenons sur le thème que fait l'initialisation?
Le code est le suivant:
Copier le code du code comme suit:
var class = {
Create: function () {
Return function () {
this.Initialize.apply (ceci, arguments);
}
}
}
var a = class.create ();
Ce code consiste à construire une copie de fonction dans A, cette fonction est
Le code est le suivant:
Copier le code du code comme suit:
Fonction () {
this.Initialize.apply (ceci, arguments);
}
Et cette dernière méthode est utilisée pour fabriquer un constructeur. Lors de l'utilisation de ce constructeur pour construire un objet, il permettra à la méthode initiale () de la variable initialialise du constructeur exécuté la méthode applicable (). De cette façon, il sera contacté lors des objets initialisés (comment contacter l'application).
Donc
Le code est le suivant:
Copier le code du code comme suit:
A.prototype = {
initialiser: fonction (v) {
ce.
}
showValue: function () {
alerte (this.value);
}
}
Qu'est-ce que ça veut dire?
Le prototype signifie "prototype". A est une fonction (), alors A. Prototype est une variable de fonction, qui est en fait un objet. Quelle méthode a cet objet, alors quelle méthode l'objet généré par la fonction?
var a = new a ('helloord!');
a.
Par conséquent, l'objet A aura également une méthode d'initialisation. '), Initialize est revenu pour appeler la méthode d'application. Il s'agit de la méthode d'appel d'une initialisation.
3. call () et appliquer ()
Laissez-y à étudier appliquer (), trouvez quelques informations en ligne et combinez vos propres recherches pour comprendre les fonctions de Call () et appliquer ().功能基本一样 , function (). Call (objet, {}, {} ……) 或者 function (). Appliquer (objet, [……]) 的功能就是对象 objet 调用这里的 funciton () , 不同之处是Le paramètre d'appel est passé à Funciton à partir de la seconde. Appliquer n'a que deux paramètres, et le second est un tableau, qui stocke tous les paramètres passés aux fonctions.
this.Initialize.apply (ceci, arguments);
Qu'est-ce que ça veut dire?
Le premier ici fait référence à l'objet généré après avoir appelé le constructeur avec un nouvel appel, qui est le précédent A, puis bien sûr, le second devrait se référer au même objet. Ensuite, cette phrase est la suivante (c'est-à-dire, a) d'appeler la méthode d'initialisation, et le paramètre est un objet d'arguments (le nombre du tableau des paramètres).
Alors, comment passer les paramètres de la méthode d'initialisation?
Quatrièmement, les arguments objet
Ce code peut tout expliquer:
Le code est le suivant:
Copier le code du code comme suit:
fonction test () {
Alerte (type de arguments);
pour (var i = 0; i <arguments.length; i ++) {
Alerte (arguments [i]);
}
}
test ("1", "2", "3");
test ("a", "b");
Après l'exécution, alerte (typeof arguments); Ensuite, jouez 1, 2 et 3 à tour à tour. Expliquez que les arguments sont le tableau solide de l'appel de la fonction.
Le code est le suivant:
Copier le code du code comme suit:
var class = {
Create: function () {
Return function () {
this.Initialize.apply (ceci, arguments);
}
}
}
Les arguments sont le tableau solide de constructeur renvoyé par création, donc
var a = new a ('helloord!');
Au moment de «Hellooword!