Com o desenvolvimento dos tempos, cada vez mais frameworks excelentes têm aparecido no campo JavaScript, o que simplifica muito nosso trabalho de desenvolvimento. Quando usamos esses frameworks, devemos também pensar em suas origens e em como eles são construídos? Se você não está satisfeito em usar apenas algumas APIs prontas, mas tem um conhecimento profundo de seus mecanismos internos de implementação (segundo alguém, APIs são as coisas que depreciam mais rapidamente), a melhor maneira é ler seu código-fonte. que você pode lê-lo.
Estudei o código-fonte do jQuery nos últimos dois dias e aqui compartilharei alguns de meus conhecimentos superficiais. Corrija-me se eu for inadequado. Ok, vamos dar uma olhada em como o jQuery funciona. Presumo que você já tenha algum conhecimento básico de JavaScript. Se o básico não for suficiente, recomendo que você leia os dois livros "JavaScript Advanced Programming" e "Understanding JavaScript". Este artigo não é adequado para amigos que não entendem conceitos como classes, objetos, funções, protótipos, etc.
Vamos começar desde o início:
Primeiro construa um objeto para o usuário, assumindo que nosso framework se chama Shaka (meu nome;))
var Shaka = function(){}; Aqui criamos uma função vazia sem nada nela. Esta função é na verdade nosso construtor. Para que o objeto que geramos chame os métodos definidos no protótipo, precisamos adicionar alguns métodos ao Shaka usando o protótipo (pense no Shaka como uma classe), então definimos:
Shaka.fn = Shaka.prototype = {};
Shaka.fn aqui é equivalente ao alias de Shaka.prototype para uso futuro. Eles apontam para a mesma referência.
OK, vamos adicionar um método sayHello e adicionar um parâmetro ao Shaka, para que a aparência mais básica deste framework já esteja lá. Se estiver ativo, já tem 1 ano.
Execute a caixa de código
[Ctrl+A Selecionar todas as dicas: você pode modificar parte do código primeiro e depois pressionar Executar]
Ok, não fique animado. Percebemos que existem algumas diferenças no uso deste framework e do jQuery. Por exemplo, em jq podemos escrever assim:
jQuery('#myid').someMethod();
Como isso é feito, ou seja, o construtor jQuery() retorna uma instância do objeto jQuery, então podemos chamar seu método nele, então o construtor do Shaka deve retornar uma instância, e deve ficar assim:
var Shaka = function(){ return //Retorna a instância do Shaka };
Então, como obtemos uma instância do Shaka? Vamos primeiro revisar o uso do protótipo para simular uma classe. var someObj = new MyClass(); a função MyClass, que é o construtor da classe, e então someObj obtém os métodos definidos em MyClass.prototype. O ponteiro this nesses métodos refere-se à instância do objeto atual.