Contenido

StackJS, framework JS para que la orientación a objetos sea más fácil

26 Jun

+ 3

StackJS es un framework más que nos ofrece las herramientas necesarias para facilitarnos la tarea implementar mediante orientación a objetos en javascript.

Además de una serie de funcionalidades que le aportan robustez a nuestras creaciones.

setters y getters automáticos

Automáticamente tendremos disponible métodos de insercción y consulta de todos los atributos de la clase, lo que nos facilitará la tarea de trabajar con ellas.


Class('Car', {
	engineSize: null,
	model: null,
	manufacturer: null,
	maxSpeed: null,
	Car: function(manufacturer) {
		this.manufacturer = manufacturer;
	}
});

var car = new Car('Toyota');
car.setModel(2007); // Setter Automático
console.log(car.getManufacturer()); // Getter Automático

Gestión de errores

La posibilidad de definir nuestras propias excepciones, condicionar funcionamientos y lanzarlas cuando detectemos un problema nos permite una mayor control de nuestro código.


Class('MyException::Exception',{
	test: null,
	MyException: function(test) {
		this.message = "Excepción lanzada";
		this.human = test;
	}	
});

Class('MiClass', {
	falla: function(){
		Throw(new MyException(this)); // Excepción
	}
});


var miKlass = new MiClass();

// Evento MyException
Catch('MyException', function(ex){
	console.log("Se ha producido una excepción controlada");
});

miKlass.falla();

Delegación de objetos

Portado de ObjectiveC podemos vincular objetos delegando eventos entre ellos.


Class("Engine",{
	size: null,
	Engine: function(size) {
		this.size = size;
	},
	start: function() {
		this.callDelegate("didBrokenPart",[this]);	
	}
});

Class("Car",{
	engine: null,
	Car: function() {
		this.engine = new Engine(1600); // Creamos un nuevo Engine
		this.engine.setDelegate(this); // Delegamos el nuevo objeto creado
	},
	drive: function() {
		console.log("start drive");
		this.engine.start();
	},
	stop: function() {
		console.log("car is stopped");
	},
	didBrokenPart: function(object) {
		this.stop();
	}
});

Y todo en solo 3kb comprimdido.
[Descargar]

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.