Avec le développement du Times, de plus en plus d'excellents cadres sont apparus dans le camp JavaScript, qui a considérablement simplifié notre travail de développement. Si vous n'êtes pas satisfait de simplement utiliser des API prêtes à l'emploi, mais que vous comprenez plutôt leurs mécanismes de mise en œuvre internes (comme quelqu'un le dit, les API sont la chose d'amortissement la plus rapide), la meilleure façon est de lire leur code source. est que vous pouvez le comprendre.
J'ai étudié le code source de JQuery au cours des deux derniers jours. D'accord, jetons un œil à la façon dont JQUERY fonctionne. Cet article ne convient pas aux amis qui ne comprennent pas les concepts tels que les classes, les objets, les fonctions, les prototypes, etc. en js.
Commençons par le début:
Tout d'abord, construisez un objet pour l'utilisateur, en supposant que notre cadre est appelé shaka (mon nom;))
var shaka = fonction () {}; nous créons ici une fonction vide avec rien à l'intérieur, cette fonction est en fait notre constructeur. Pour que l'objet généré appelle les méthodes définies dans le prototype, nous devons ajouter des méthodes à Shaka dans le prototype (prendre Shaka en classe), nous définissons donc:
Shaka.fn = shaka.prototype = {};
Ici, Shaka.fn est équivalent à l'alias de Shaka.protype, ce qui est pratique pour une utilisation future.
Ok, ajoutons une méthode pour Sayhello et ajoutant un paramètre à Shaka, afin que le cadre le plus basique soit déjà là.
Exécutez la case de code
[Ctrl + a tous les conseils de sélection: vous pouvez d'abord modifier du code, puis appuyer sur Run]
Ok, ne soyez pas excité, nous avons remarqué qu'il existe certaines différences entre ce cadre et jQuery utilisé, par exemple, dans JQ, nous pouvons écrire de cette façon:
jQuery ('# myid'). SomeMethod ();
Comment cela fonctionne-t-il?
var shaka = fonction () {return // renvoie l'instance de shaka;};
Alors, comment obtenir une instance de Shaka? La fonction MyClass, c'est-à-dire le constructeur de classe, puis certains obtiennent les méthodes définies dans myClass.prototype.