Declarando um modulo em Javascript

<html>
	<header>
		<script type="text/javascript">
			// declara uma variável no global (no caso window).
			var meuNomeCompleto = "pedro abs";

			// A variável x abaixo recebe um objeto que funciona como um módulo de funções.
			var x = (function(global){
					
					var idade = 35;
					
					return {
						nome: "pedro",
						funcao1: function(){
							this.funcao2();
						},
						funcao2: function(){
							/*
							Faz-se necessário declarar a dependencia por causa da função anônima abaixo.
							[this] aqui refere-se ao objeto que está sendo retornado.
							*/
							var DEPENDENCY = this;
							(function(){

								
								// pela dependencia declarada acima
								document.write("1) " + DEPENDENCY.nome + "<br>");

								// indiretamente pelo objeto x (no window)
								document.write("2) " + x.nome + "<br>");

								// diretamente pelo objeto x (no window) 
								document.write("3) " + window.x.nome + "<br>");

								/*
								[this] aqui refere-se ao window, pois quem está chamando esta
								função indiretamente (function2) é o window conforme podemos ver em
								window.onload ... A [funcao1] chama a [funcao2]
								*/
								document.write("4) " + this.x.nome + "<br>");

								// pela referência passada de window com o nome (global)
								document.write("5) " + global.meuNomeCompleto + "<br>");
								
								// imprime a variável privata a este objeto.
								document.write("6) " + idade + "<br>");
							}());
						}
					}
				})(this);

			window.onload = function(){
				x.funcao1();
			}
		</script>
	</header>
	<body>
	</body>
</html>
Anúncios
Esta entrada foi publicada em Javascript e AJAX com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s