Programmation Orientée Objet et Ajax avec Javascript

Damien Raude-Morvan - <drazzib@drazzib.com>

Linux-Nantes - http://www.linux-nantes.org/

Javascript, un language complet

Javascript ou la programmation orientée prototype

Les différents types d'objets JS

Modification des objets natifs

Ajout d'une méthode fill à l'objet natif Array :
function fill()
{
	this.color = "blue";
	this.size = 10;
}

Array.prototype.fill = fill;

var myArray = new Array();
myArray.fill();

Nouveaux objets utilisateurs : I - via une fonction

I - Utilisation d'un constructeur :
function Dog(name) {
	// Attributs
	this.name = name;

	// Fonctions
	this.talk = function() {
		alert( this.name + " dit Wouaf !" )
	}
} 

dog1 = new Dog("Medor");
dog1.talk();

dog2 = new Dog("Reglisse");
dog2.talk();

Nouveaux objets utilisateurs : II - via prototype

II - Utilisation du prototype :
[...] code du slide précédent [..]

Dog.prototype.changeName = function(name)
{
	this.name = name;
}

dog1 = new Dog("Felix");
dog1.changeName("Bill");
dog1.talk();

Nouveaux objets utilisateurs : III - via prototype.js

II - Pour nous faciliter la vie, utilisons la bibliothèque Prototype.js :
// Déclaration de la classe
var MySampleClass = Class.create();

// Implémentation de la classe
MySampleClass.prototype = {
	initialize: function(message) {
		this.message = message;
	},
	showMessage: function(ajaxResponse) {
		alert(this.message);
	}
};

// Création d'un instance de la classe
var myTalker = new MySampleClass('Hello World!');
myTalker.showMessage();

Mettre en place un héritage entre objets

Exemple pour MaClasse sous-classe de MonParent :
function MonParent() {
  this.b = function() { return 'parent'; }
  this.e = 3;
}

function MaClasse() {
  this.d = function() { return 'classe'; }
  this.e = 4;
}
MaClasse.prototype = new MonParent();

monObjet = new MaClasse();
monObjet.b();
monObjet.d();
monObjet.e;

Le Document Object Model (DOM)

DOM via JS

Javascript : Bonnes pratiques

Ce qu'il ne faut pas faire : Bonnes pratiques :

Javacript : tout n'est pas résolu

AJAX, ou Asynchronous JavaScript And XML

Ajax n'est ni un langage, ni une technologie. Ajax est un ensemble de technologies existantes utilisées conjointement :

Ajax : un peu d'histoire

Ajax : un peu de code I

Créons un objet XMLHttpRequest :

Ajax : un peu de code II

Transmission des données :
var data = "var1=value&var2=data";

xhr.open("POST", "http://gasell.org/ajax.php", true);
req.onreadystatechange = function (evt) {
  if (req.readyState == 4) {
     if(req.status == 200)
      dump(req.responseText);
     else
      dump("Error loading page\n");
  }
};

// GO !
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(data);

Aller plus loin

Outils de programmation JS

Socles (frameworks) existants