Skip to content

Instantly share code, notes, and snippets.

@zenorocha
Created June 28, 2012 16:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zenorocha/3012466 to your computer and use it in GitHub Desktop.
Save zenorocha/3012466 to your computer and use it in GitHub Desktop.
JS Module Pattern - GE.com
// definindo um namespace para evitar conflito com outros objetos
window.GLOBOESPORTECOM = window.GLOBOESPORTECOM || {};
GLOBOESPORTECOM.APPS = GLOBOESPORTECOM.APPS || {};
// protegendo o $ do jQuery em uma função anônima,
// prevenindo assim conflitos com outras libs que também usam $
(function($){
GLOBOESPORTECOM.APPS.Ranking = function(options){
// definindo variáveis e métodos privados no escopo da classe
var privateObject;
// definindo valores padrão caso não receba nenhum valor como parâmetro
var defaults = {
'largura': '300',
'altura': '50'
};
// jQuery tem um método 'extend' que mescla o conteúdo de dois ou
// mais objetos, armazenando o resultado no primeiro objeto. O primeiro
// objeto geralmente é vazio já que não queremos alterar os valores
// padrão para futuras instâncias do plugin
var settings = $.extend( {}, defaults, options);
console.log(options);
console.log(defaults);
console.log(settings);
var privateMethod = function() {
// implementação do método privado
};
return { // todos os objetos aqui são públicos
publicMethod : function(){
// implementação do método público
},
init: function(){
// implementação do método de inicialização público
}
};
};
// exemplo de uma instância encapsulada
$(function(){
var ranking = new GLOBOESPORTECOM.APPS.Ranking({
'largura': '200',
'altura': '100'
});
ranking.init();
});
}(jQuery));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment