pontoNETpt
A comunidade PontoNetPT está direccionada a todos os programadores que trabalhem com a plataforma .NET.
Javascript: 3ª Parte: Private Declarations
Creative|Minds

Syndication

News

É um facto garantido: todos os objectos em javascript são publicos.

Isso não implica que não possamos contornar o problema. :)
De forma a podermos esconder as nossas declarações privadas temos de, se o objecto que estamos a criar for estático, retornar só as declarações que queremos publicas, caso contrario, declaramos as variaveis dentro do scope do objecto (que na realidade é uma função).

String.isNullOrEmpty = function(obj)
{
	return (obj == null || obj.length == 0)
}


var CreativeMinds = {};
CreativeMinds.Utils = {};

CreativeMinds.Utils.Namespace = function()
{
	/* Private Declarations */
	var strRootNameSpace = "CreativeMinds";
	var rootNameSpace = window[strRootNameSpace];
	return{
		/* Public Declarations */
		create: function(strNameSpace)
		{
			if (String.isNullOrEmpty(strNameSpace)) {
				return null;
			}
			var levels = strNameSpace.split(".");
			var currentNS = rootNameSpace;
			for (var i=(levels[0] == strRootNameSpace) ? 1 : 0; i<levels.length; ++i) {
				currentNS[levels[i]] = currentNS[levels[i]] || {};
				currentNS = currentNS[levels[i]];
			}
			return currentNS;
		}
	}
}();

CreativeMinds.Utils.Namespace.create("CreativeMinds.Controls");

CreativeMinds.Controls.TextBox = function(strID)
{
	/* Private Declarations */
	var _id = strID;
	var _ctrl = null;
	
	/* Private Constructor */ 
	function init()
	{
		_ctrl = document.getElementById(_id);
	}
	init();
	
	/* Public Declarations */
	this.id = _id;
	this.control = _ctrl;
	
	this.get_Text = function()
	{
		return _ctrl.value;
	}
};

var txtNome = new CreativeMinds.Controls.TextBox("txtnome");
alert(txtNome.get_Text());

E pronto. Temos dois objectos criados, um dele estático, "arumados" dentro de namespaces, e com declarações privadas. Temos aqui a base para o desenvolvimento de uma framework client-side.

Restantes partes:

1ª Parte: OOP
2ª Parte: namespaces
3ª Parte: Private Declarations
4ª Parte: Agrupar tudo numa framework
5ª Parte: Links de Referência

Posted 22-6-2006 21:16 por Bruno Figueiredo

Add a Comment

(requerido)  
(opcional)
(requerido)  
Remember Me?
If you can't read this number refresh your screen
Enter the numbers above:  
Powered by Community Server (Commercial Edition), by Telligent Systems