Con el desarrollo de los tiempos, han aparecido cada vez más marcos excelentes en el campo de JavaScript, lo que simplifica enormemente nuestro trabajo de desarrollo. Cuando usamos estos marcos, ¿deberíamos pensar también en sus orígenes y en cómo se construyen? Si no está satisfecho con solo usar algunas API listas para usar, pero tiene un conocimiento profundo de sus mecanismos de implementación internos (según alguien, las API son las que se deprecian más rápido), la mejor manera es leer su código fuente. que puedas leerlo.
He estudiado el código fuente de jQuery en los últimos dos días y aquí compartiré algunos de mis conocimientos superficiales. Corríjame si soy inapropiado. Bien, echemos un vistazo a cómo funciona jQuery. Supongo que ya tiene algunos conocimientos básicos de JavaScript. Si los conceptos básicos no son suficientes, le recomiendo que lea los dos libros "Programación avanzada de JavaScript" y "Comprensión de JavaScript". Este artículo no es adecuado para amigos que no comprenden conceptos como clases, objetos, funciones, prototipos, etc. en js.
Empecemos desde el principio:
Primero construya un objeto para el usuario, asumiendo que nuestro marco se llama Shaka (mi nombre;))
var Shaka = function(){}; Aquí creamos una función vacía sin nada en ella. Esta función es en realidad nuestro constructor. Para que el objeto que generamos llame a los métodos definidos en el prototipo, necesitamos agregar algunos métodos a Shaka usando el prototipo (piense en Shaka como una clase), por lo que definimos:
Shaka.fn = Shaka.prototype = {};
Shaka.fn aquí es equivalente al alias de Shaka.prototype para uso futuro. Apuntan a la misma referencia.
Bien, agreguemos un método sayHello y agreguemos un parámetro a Shaka, para que la apariencia más básica de este marco ya esté ahí. Si está vivo, ahora tiene 1 año.
Ejecutar cuadro de código
[Ctrl+A Seleccionar todos los consejos: primero puede modificar parte del código y luego presionar Ejecutar]
Bien, no te emociones. Hemos notado que existen algunas diferencias en el uso de este marco y jQuery. Por ejemplo, en jq podemos escribir así:
jQuery('#myid').someMethod();
¿Cómo se hace esto? Es decir, el constructor jQuery () devuelve una instancia de objeto jQuery, para que podamos llamar a su método en él, por lo que el constructor de Shaka debería devolver una instancia y debería verse así:
var Shaka = function(){ return //Devuelve la instancia de Shaka };
Entonces, ¿cómo obtenemos una instancia de Shaka? Primero revisemos cuando usamos el prototipo para simular una clase. var someObj = new MyClass(); en este momento, creamos un nuevo objeto someObje y usamos el nuevo objeto como este puntero. la función MyClass, que es el constructor de la clase, y luego someObj obtiene los métodos definidos en MyClass.prototype. El puntero this en estos métodos se refiere a la instancia del objeto actual.