X

Comment étendre les prototypes avec JavaScript


L’un des points de friction idéologiques du premier framework JavaScript était l’extension des prototypes par rapport aux fonctions d’encapsulation. Des frameworks comme MooTools et Prototype ont étendu les prototypes, contrairement à jQuery et à d’autres frameworks plus petits. Chacun avait ses avantages, mais finalement toutes ces années plus tard, je crois toujours que la capacité d’étendre les prototypes natifs est une fonctionnalité massive de JavaScript. Voyons à quel point il est facile de renforcer chaque instance d’une primitive en étendant les prototypes !

Chaque JavaScript natif, comme Number, String, Array, Objectetc. a un prototype. Chaque méthode sur un prototype est hérité par chaque instance de cet objet. Par exemple, nous pouvons fournir chaque `Array exemple avec un unique méthode en étendant son prototype :

Array.prototype.unique = function() {
  return [...new Set(this)];
}

['1', '1', '2'].unique(); // ['1', '2']
new Array('1', '1', '2').unique(); // ['1', '2']

Notez que si vous pouvez également garantir la capacité de chaînage en retournant this:

['1', '1', '2'].unique().reverse(); // ['2', '1']

La plus grande critique de l’extension des prototypes a toujours été la collision de noms où l’éventuelle implémentation de la spécification est différente de l’implémentation du framework. Bien que je comprenne cet argument, vous pouvez le combattre en préfixant les noms de fonctions. Ajouter des super pouvoirs à un prototype natif pour que chaque instance l’ait est si utile que je ne dirais jamais à quelqu’un de ne pas étendre un prototype. #MooToolsFTW.

  • API de visibilité des pages

    Un événement qui a toujours fait défaut dans le document est un signal lorsque l’utilisateur regarde un onglet donné ou un autre onglet. Quand l’utilisateur quitte-t-il notre site pour regarder autre chose ? Quand reviennent-ils ?

  • Correction de l’impression sIFR avec CSS et MooTools

    Bien que je ne sois pas un grand défenseur du sIFR, je peux comprendre son attrait. Un client nous a récemment demandé d’implémenter sIFR sur son site web mais j’ai rencontré un problème : les en-têtes sIFR ne s’imprimaient pas car il s’agissait d’objets Flash. Voici comment réparer…

  • Attribuer des identifiants d’ancrage à l’aide de MooTools 1.2

    L’une de mes utilisations préférées de la bibliothèque JavaScript MooTools est le plugin SmoothScroll. Je l’utilise sur mon site Web, le site Web de mon employeur et sur de nombreux sites Web de clients. La meilleure partie du plugin est qu’il est si facile à mettre en œuvre. J’ai récemment couru…