Javascript, Programando Orientado à Objeto - Parte III


By: Eduardo Almeida- 13/10/2011
Em: Client side, Ambientes & Linguagens - Comentários: 2 - Leituras: 251

Após fazer algumas abordagens mais simples à alguns conceitos de Orientação a Objeto em Javascript, hoje irei ensinar como trabalhar com namespaces.

"Registrando" um namespace

Registrar um namespace em javascript, pode ser feito de várias formas possíveis, porém inicialmente irei abordar a forma, que no meu ponto de vista, é a mais fácil e prática.

Para registrar um namespace, basta criar uma variável atribuindo ela à ela mesmo e usando o operador lógico || e logo após {} que definirá a variável como um objeto caso ela esteja indefinida.

Criando o namespace

    //Namespace Carros
    var Carros = Carros || {};
    Carros.quantidade = 3;
    
    alert(Carros.quantidade); // mostrará na tela o valor 3

Uma abordagem mais complexa

Agora que temos o namespace "Carros" criado, vamos fazer uma abordagem um pouco mais complexa ao objeto criando "sub" namespaces. Vejamos o exemplo:

   
    //Namespace HondaCivic
    Carros.HondaCivic = {};
    Carros.HondaCivic.ano = 2011;
    Carros.HondaCivic.cor = "preto";
    
    //Namespace Camaro
    Carros.Camaro = {};
    Carros.Camaro.ano = 2010;
    Carros.Camaro.cor = "amarelo";
    
    //Namespace AudiTT
    Carros.AudiTT = {};
    Carros.AudiTT.ano = 2010;
    Carros.AudiTT.cor = "cinza";
    
    
    alert(Carros.HondaCivic.cor); // mostrará na tela o valor preto
    alert(Carros.HondaCivic.ano); // mostrará na tela o valor 2011

Que tal uma função para registrar vários níveis de namespace?

	function regNS(ns)
	{
		var nameSpaces = ns.split(".");
		var raiz = window;
	
		for(var i=0; i < nameSpaces.length; i  )
		{
			if(typeof raiz[nameSpaces[i]] == "undefined")
			raiz[nameSpaces[i]] = new Object();
			raiz = raiz[nameSpaces[i]];
		}
	}

Exemplo de uso

Para demonstrar o quanto o Javascript é flexível, vou fazer uma demonstração utlizando duas abordagens diferentes de de criar namespaces.

Primeiro, irei criar o namespace Carros conforme no início deste post

	//Namespace Carros
	var Carros = Carros || {};
	Carros.quantidade = 3;

Depois, irei criar o namespace Casa.Garagem utilizando a função regNS que criamos acima

	regNS("Casa.Garagem");

No final, podemos simular herança, atribuindo o namespace Carros ao namespace Casa.Garagem.Carros

	Casa.Garagem.Carros = Carros;
	
	alert(Casa.Garagem.Carros.quantidade);  // mostrará na tela o valor 3


Por favor, confirme ser uma pessoa respondendo abaixo:

Comentários

" eduardo, você demonstrou a atrubuicao de namespace

Casa.Garagem.Carros = Carros;

pergunto, caso eu construa o namespace Carros.HondaCivic como no inicio do exemplo, isto iria funcionar?

alert(Casa.Garagem.Carros.HondaCivic.ano) "

Por: Marcos. Em: 13/10/2011


" Caro Marcos, com certeza irá funcionar, assim como os com os outros "Carros" "

Por: Eduardo Almeida. Em: 20/10/2011


buscar na WEB2:

pesquisar

receber nossa newsletter:

participar da newsletter

Desde de 1998 ...
a WEB2 vêm desenvolvendo sites, softwares, implementando ambientes servidores, prestando consultoria na área de segurança para diversas empresas como bancos, imobiliárias, agências, cartórios, escritórios de advocacia e até empresas multi-nacionais. Trabalhamos para criar experiências intuitivas para os usuários, desenhar interfaces ricas e elegantes, desenvolver aplicativos úteis, consolidar sites e produtos que ajudamos a criar, seja desenvolvendo, analisando ou melhorando sua performance. Resumindo, construímos "business" para internet.


Copyright © 2012 WEB2 Soluções LTDA. CNPJ: 14.832.733/0001-05. Microsoft Partner

PostgreSQL Perl