10345 sujets

JavaScript, DOM et API Web HTML5

Bonjours à tous,

Je viens de terminer un plugin jQuery que j'aimerais partager avec vous. Si vous n'êtes pas adepte de jQuery, rassurez vous, ce plugin peut-être adapté très facilement pour s'en passer, puisque n'utilisant que la fonction $.extend de ce framework.

Le tout est sous GPL donc réutilisez, modifiez, à condition de rester sous GPL. Si vous faites des modif, si possible tenez moi informé.

Un lien vaut mieux qu'un long discours : http://plugins.jquery.com/project/classBuilder

En espérant que cela ne soit pas pris comme de la pub. Je n'ai rien à vendre, et tout est sous licence libre. Je suis simplement content de ma conneries, et persuadé qu'elle pourrait resservir à d'autres.
Mouais POO en javascript, perso j'ai jamais trop vu l'intérêt (surtout l'utilité dans la pratique).
La programmation par protoype est quand même plus approprié et des grandes librairies JS s'en sortent très bien ainsi.
Modérateur
Bonjour,

Je suis d'accord avec MoOx, à ceci près : le titre du sujet est mal choisi, car JavaScript est un langage orienté objet ; ce que tu proposes avec ton plugin est d'y ajouter une notion qui n'y existe pas : les classes.

Les exemples de code à ce sujet sont loin d'être rares sur le Web, et si cela n'est pas proposé par jQuery, c'est justement parce que l'une des raisons de la réussite de cette bibliothèque est d'avoir utilisé intelligemment la puissance de JavaScript et non pas de tenter d'y greffer des paradigmes qui n'y existent pas (contrairement à d'autres bibliothèques comme Prototype).
Julien Royer a écrit :
Les exemples de code à ce sujet sont loin d'être rares sur le Web, et si cela n'est pas proposé par jQuery, c'est justement parce que l'une des raisons de la réussite de cette bibliothèque est d'avoir utilisé intelligemment la puissance de JavaScript et non pas de tenter d'y greffer des paradigmes qui n'y existent pas (contrairement à d'autres bibliothèques comme Prototype).


Salut,

Les exemple de ce type sont en effet relativement courants sur le web. Tout du moins sur le coté classes de la chose (et donc héritage).

Cependant, aucun d'entre eux n'intègre une gestion du polymorphisme aussi poussée. C'est sur ce point que mon code est un progrès par rapport à ce qui est existant.

En effet, dans la plupart des cas, la notion de classe n'est pas nécessaire en javascript. Cependant, ayant pour ma part un expérience bien plus orientée SaaS que web traditionnel, je peux t'assurer que cela manque cruellement dans certains cas. Je ne suis pas un de ces fondus du tout orienté objet. Cependant, ce paradigme est particulièrement adapté pour exprimer certains algorithmes. Si cela n'est pas utile pour créer un menu déroulant ou checker la validité d'un formulaire - on est d'accord - cela se révèle être un vrai plus dans le cas de développement d'applications s'utilisant à travers un navigateur.

Enfin, jQuery n'est utilisé ici que pour sa méthode $.extends . Ce n'est en effet ni le paradigme choisis par jQuery, ni un objectif de cette bibliothèque que de faire de l'objet. Une fonction extends faite à la main, ou bien celle de n'importe quelle autre lib javascript ferait tout aussi bien l'affaire.
Modérateur
Hello,

Je pense que tu gagnerais beaucoup à te séparer de JQuery. Si tu 'nen as pas besoin, pourquoi l'utiliser ?
Je sépare la présentation (ou j'utilise jQuery) et le code applicatif (ou la POO est utile).

Cependant, ayant jQuery de chargé pour la partie présentation, autant réutiliser la fonction $.extends, non ? Plutôt que d'en refaire une qui fait la même chose (et potentiellement perdre quelques cheveux sur des bugs en la refaisant Smiley cligne ).
Et un truc de ce genre ne suffit pas :
var Forme=function(){
	this.aire=function(){
		return 0;
	}
}

var Carre=function(cote){
	this.aire=function(){
		return cote*cote;	
	}
}
Carre.prototype=Forme.prototype;

var Cercle=function(rayon){
	this.aire=function(){
		return Math.PI*rayon*rayon;	
	}
}
Cercle.prototype=Forme.prototype;

Modifié par MacIntoc (29 Jul 2010 - 10:07)