Programujeme objektově v JavaScriptu

Zdeněk Vlach

senior webmaster Seznam.cz

Co nás dnes čeká

Co je to vlastně ten JavaScript?

Standardy definující JavaScript

Proč programovat v JavaScriptu?

Jak tedy zapsat objekt?

Literálovým zápisem


	var a = {
		vlastnost_1 : "hodnota",
		vlastnost_2 : function(param){
			return param + 1;
		}
	}; 
	

Pomocí operátoru new Object


	var a = new Object();
	a.vlastnost_1 = "hodnota";
	a.vlastnost_2 =  function(param){
		return param + 1;
	}
	

Pomocí funkce konstruktoru


	function A(param){
		var _param = param;
		
		this.vlastnost_1 = "hodnota";
		this.getParam_2 =  function(){
		return param;
	}
	
	var a = new A('neco');
	

Pomocí funkce konstruktoru + prototypy


	function A(param){
		this.param = param;
	}
	A.prototype.vlastnost_1 = "hodnota";
	A.prototype.vlastnost_2 =  function(param){
		return param + 1;
	}
	
	var a = new A('neco');
	

Proč jsme vybrali poslední možnost

Model fungující v Seznamu

CLASSMAKER

CLASSMAKER - příklad


SZN.A = function () {
	this.A();
};
SZN.A.Name = 'A';
SZN.A.version = '1.1';
SZN.ClassMaker.makeClass(SZN.A);

/* implcitní fce konstruktoru*/
SZN.A.prototype.A = function () {}
SZN.A.prototype.destructor = function () {}

SZN.A.prototype.fnce_1 = function () {
	return "hodnota";
};

/* fce která dědí*/
SZN.B = function () {
	this.B();
};
SZN.B.Name = 'B';
SZN.B.depend = [{sClass: SZN.A, ver:'1.1'}];
SZN.B.extend = 'SZN.A'; // nebo SZN.B.extend = [A];
SZN.ClassMaker.makeClass(SZN.B);

/* implcitní fce konstruktoru*/
SZN.B.prototype.B = function () {}
SZN.B.prototype.destructor = function () {}

SZN.B.prototype.fnce_2 = function () {
	return "hodnota";
};

var b = new SZN.B();

/* po zavolání SZN.ClassMaker.makeClass(SZN.B);
   bude i třída SZN.B obsahovat metodu fnce_1, kterou definuje SZN.A
*/
	

Obor platnosti proměných

Obor platnosti proměných v událostech

Jmenný prostor

SZN LIBS

SZN LIBS - struktura - Jádro

SZN LIBS - struktura - Widgets

SZN LIBS - finále

Chystáme se SZN LIBS uvolnit!

Literatura

Developerské nástroje

Děkuji za pozornost — otázky?