/ / Perguntas sobre a organização de funções jQuery em uma única função - javascript, jquery

Perguntas sobre Organizando funções do jQuery em uma única função - javascript, jquery

Notei que às vezes as pessoas colocam um monte de funções que podem ser chamadas dentro de suas $(function() { ...here... }); quadra. Eu me perguntava por que, mas então notei um possível motivo: colisões de nomes não parecem ser uma preocupação se os dois objetos estiverem em blocos de código jQuery diferentes.

Meu pensamento está correto? Isso parece ser uma grande vantagem.

Mas agora que adotei essa abordagem, tenho opreciso fazer uma das minhas funções chamar de outros blocos de código jQuery. Então, eu posso mover a função para fora do bloco de código, mas ele precisa chamar outras funções dentro do bloco de código.

Então, preciso mover todas as minhas funções para fora do bloco de código ou existe uma maneira de manter essa separação, mas ainda conseguir chamar uma das minhas funções de outro bloco de código?

Respostas:

1 para resposta № 1

O fato de eles estarem usando o documento do jQuery.o atalho pronto não é realmente um problema para definir as variáveis, mas também o fato de as variáveis ​​(ou funções) estarem dentro de um fechamento criado pela função anônima

`function(){}`

Então, sim, isso é feito principalmente para evitar poluir o espaço para nome global. Também é feito com a esperança de que, uma vez fora do escopo, o coletor de lixo pode ser capaz de coletar parte do que estava lá (já que está fora do escopo).

Se você deseja ter uma variável global, hánada de errado com isso, apenas tente limitá-los o máximo possível. Se você precisar de um de dentro do bloco pronto, defina-o de fora e faça referência a ele de dentro.

var MyGlobalObj_guid52z = {};
$(function(){
MyGlobalObj_guid52z.MyFunction = function(){
//do what you want in here
};
});
//and later you can do this
MyGlobalObj_guid52z.MyFunction();

1 para resposta № 2

Você deve ler o padrão do módulo. Aqui está um pequeno exemplo para você:

window.Namespace = window.Namespace || {}; //defining our namespace

Namespace.Module = (function(){
var api = {};

var func = function() { //private function, accessible only inside this module

};

api.publicfunc = function() { // public function

};

return api; //all api functions will be available globally
})();