Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    Consultant freelance, n'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Surcharge de méthodes en JavaScript

Il est très difficile d'écrire du code "orienté objet" en JavaScript pur car celui ci n'est pas prévu pour ça, mais on peut tout à fait coder des fonctions qui nous permettent d'utiliser l'héritage et beaucoup d'autres choses, d'ailleurs Derf à écrit un très bon article la dessus : JavaScript & La POO. Microsoft Ajax Library ("Atlas") possède de nombreuses fonctionnalités permettant à JavaScript de devenir orienté Objet. Après avoir parcouru les différents fichiers JavaScript d'Atlas je me suis aperçu qu'une chose manquait : la surcharge des méthodes c'est à dire la possibilité d'écrire plusieurs méthodes en ayant seulement la signature qui change.

On peut tout à fait le faire avec Atlas mais il n'existe pas de convention d'écriture à ce jour, voici celle que j'ai choisis :

toString : function(){ if (arguments.length == 1 && Object.getType(arguments[0]) == String){ return this.toString$String.apply(this, arguments); } else if (arguments.length == 2 && Object.getType(arguments[0]) == String && Object.getType(arguments[1]) == Sample.Person){ return this.toString$String$Person.apply(this, arguments); } else { return this.toString$.apply(this, arguments); } }, toString$ : function(){ return String.format('je suis {0} {1}', this.get_firstName(), this.get_lastName()); }, toString$String : function(format){ return String.format(format, this.get_firstName(), this.get_lastName()); }, toString$String$Person : function(format, person){ return String.format('{0} , {1}', this.toString(format), person.toString(format)); }

Le code ne nécessite pas d'explication, il est relativement simple si on a quelques notions de JavaScript avec Atlas. L'exemple ci-dessous utilise cette surcharge :

window.pageLoad = function(){ var p = new Sample.Person('Cyril', 'Durand'); alert(p.toString()); alert(p.toString('{0} {1}')); var p2 = new Sample.Person('Toto', 'Bidule'); alert(p.toString('{0} {1}', p2)); }

Je pense qu'il serait bien que cette fonctionnalité soit intégré dans Orcas, qu'en pensez vous ? quelqu'un sait il où on peut mettre nos idées en ce qui concerne Visual Studio "Orcas" ? (par défaut j'ai fait la requête sur le forum www.asp.net)

 


Pour info, voici le code de ma classe au complet :

// Création d'un namespace Type.registerNamespace('Sample'); // Constructeur de la class Personne Sample.Person = function(firstName, lastName){ this._firstName = firstName; this._lastName = lastName; } // Rajout des différentes méthodes à  notre type Sample.Person.prototype = { get_firstName : function(){ return this._firstName; }, set_firstName : function(value){ this._firstName = value; }, get_lastName : function(){ return this._lastName; }, set_lastName : function(value){ this._lastName = value; }, toString : function(){ if (arguments.length == 1 && Object.getType(arguments[0]) == String){ return this.toString$String.apply(this, arguments); } else if (arguments.length == 2 && Object.getType(arguments[0]) == String && Object.getType(arguments[1]) == Sample.Person){ return this.toString$String$Person.apply(this, arguments); } else { return this.toString$.apply(this, arguments); } }, toString$ : function(){ return String.format('je suis {0} {1}', this.get_firstName(), this.get_lastName()); }, toString$String : function(format){ return String.format(format, this.get_firstName(), this.get_lastName()); }, toString$String$Person : function(format, person){ return String.format('{0} , {1}', this.toString(format), person.toString(format)); } } // Enregistrement de notre type dans le framework Atlas Sample.Person.registerClass('Sample.Person');
Posted: dimanche 19 novembre 2006 02:18 par cyril
Classé sous : , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

richardc a dit :

Pour Orcas, comme dab, sur connect.ms

# novembre 19, 2006 07:21
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays Paris 2010 : La BI dans SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 33 minutes

- TechDays Paris 2010 : Déploiement de nouvelles technologies – Retour d’expérience par l’informatique de Microsoft par Blog Technique de Romelard Fabrice le il y a 2 heures et 0 minutes

- TechDays Paris 2010 : Plan de migration vers SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 5 heures et 42 minutes

- TechDays Paris 2010 : La pleinière du second jour par Blog Technique de Romelard Fabrice le il y a 6 heures et 48 minutes

- Visual Studio 2010 and .NET Framework 4 Release Candidate now available par Matthieu MEZIL le il y a 9 heures et 53 minutes

- Création d’une base de donnée sous SQL Azure par Le Blog (Vert) d'Arnaud JUND le il y a 10 heures et 50 minutes

- TechDays Paris 2010 : Les Services d’applications dans SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 20 heures et 49 minutes

- TechDays Paris 2010 : La GED et SharePoint 2010 par Blog Technique de Romelard Fabrice le 02-08-2010, 16:54

- TechDays Paris 2010 : SharePoint 2010 et Les réseaux sociaux par Blog Technique de Romelard Fabrice le 02-08-2010, 15:40

- TechDays Paris 2010 : SharePoint 2010 – Description et nouveautés par Blog Technique de Romelard Fabrice le 02-08-2010, 14:33