Created
June 28, 2012 16:53
-
-
Save zenorocha/3012466 to your computer and use it in GitHub Desktop.
JS Module Pattern - GE.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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