comment crée une fonction JavaScript comme .toLowerCase() ? ...

comment crée une fonction JavaScript comme .toLowerCase() ? ... - HTML/CSS - Programmation

Marsh Posté le 13-09-2005 à 16:08:58    

...je m'explique :
 
à la place d'avoir :
 

Code :
  1. function maFct(param1, param2){
  2. ...
  3. }


 
et donc l'appeler de la façon suivante :
 

Code :
  1. maFct(toto, titi);


 
je souhaite l'appeler comme ceci :
 

Code :
  1. toto.maFct(titi);


 
comme les fonction .toLowerCase() .toUpperCase() .innerHTML etc...
 
vous m'avez compris ?

Reply

Marsh Posté le 13-09-2005 à 16:08:58   

Reply

Marsh Posté le 13-09-2005 à 16:15:23    

monobjet.MaNouvelleFonction = function(titi) {
  this.bidule
  action.machin
}


Message édité par gatsusat le 13-09-2005 à 16:15:48
Reply

Marsh Posté le 13-09-2005 à 16:28:03    

et si t'as créé une jolie classe pour ton joli objet
 
MaClasse.prototype.maMethode = function () {
}


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-09-2005 à 16:43:02    

merci pour les réponces :)
je débute en javascript (mais connais bien le langage objet). Je ne savais pas qu'on pouvait créer des classes en javascript. Je vais m'y pencher de plus près. Merci encore :jap:

Reply

Marsh Posté le 13-09-2005 à 16:55:08    

ZeBorG a écrit :

mais [je] connais bien le langage objet


J'ai le droit de douter [:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-09-2005 à 17:51:19    

masklinn a écrit :

J'ai le droit de douter [:petrus dei]


LOL, RAC de tes doutes ! :na:  
 
en tout cas j'ai réécrit tout ce dont j'avais besoin en pseudo objet et c'est nettement plus propre/puissant comme ça.
 
 :hello:  
 
(RAC = rien à cirer = vive les acronymes à la con)

Reply

Marsh Posté le 13-09-2005 à 17:52:54    

ZeBorG a écrit :

pseudo objet


[:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-09-2005 à 18:02:21    


 :heink:  
 
 
"pseudo" par ce que c'est pas la syntaxe objet habituel. Tu sens trop que ça a était rajouté après coup pour combler un vide (cf. http://devedge-temp.mozilla.org/vi [...] avascript/ )
Enfin bref, cette approche objet marche très bien pour ce que je veux en faire donc c'est cool.

Reply

Marsh Posté le 13-09-2005 à 18:21:38    

ZeBorG a écrit :

:heink:  
 
 
"pseudo" par ce que c'est pas la syntaxe objet habituel. Tu sens trop que ça a était rajouté après coup pour combler un vide (cf. http://devedge-temp.mozilla.org/vi [...] avascript/ )
Enfin bref, cette approche objet marche très bien pour ce que je veux en faire donc c'est cool.


C'est juste qu'en JS l'objet fonctionne par prototypes et non par classes [:petrus75]
Et que la pluspart des éléments du langage sont une forme d'objets (ce qui permet entre autres de filer directement des fonctions à d'autres fonctions en paramètres, chose n'étant possible que dans les langages considérant les fonctions comme des objets à part entière)
 
Et cette page est franchement pas terrible, accessoirement [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-09-2005 à 11:53:44    

re-bonjour,
l'oop en javascript c'est bien et tout mais j'ai un peu du mal avec l'héritage. Il y à 1000 façons d'écrire la même chose et je m'y perds un peu. Je souhaite étendre la class Date avec quelques fonctions du style getMonthName qui renvoi directement le nom du mois et non le numéro comme le fait getMonth.
 
Pour l'instant, j'arrive à ajouter des méthodes directement dans l'objet Date comme ceci :
 

Code :
  1. Date.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
  2. Date.prototype.getMonthName = getMonthName;
  3. function getMonthName(){
  4. return this.monthNames[this.getMonth()];
  5. }


 
Ainsi, sur mes objets Date, je peux directement appeler getMonthName comme ceci :
 

Code :
  1. var myDate = new Date(2005, 2, 24, 1, 5, 0);
  2. alert(myDate.getMonthName()); // ceci renvoi "March"


 
 
Mais ce que je préfèrerai faire c'est crée une class DateEx qui hérite de Date puis je lui ajoute des méthode comme ceci :
 

Code :
  1. var myDate = new DateEx(2005, 2, 24, 1, 5, 0);
  2. alert(myDate.getMonthName()); // ceci renvoi "March"


 
Voici comment j'ai essayé de procéder :
 

Code :
  1. function DateEx() {
  2. this.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
  3. this.getMonthName = getMonthName;
  4. }
  5. DateEx.prototype = new Date();
  6. function getMonthName(){
  7. return this.monthNames[this.getMonth()];
  8. }


 
Malheureusement, la console javascript de firefox m'indique que this.getMonth n'existe pas. Comment faire ?

Reply

Marsh Posté le 16-09-2005 à 11:53:44   

Reply

Marsh Posté le 16-09-2005 à 12:04:12    

Date.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );  
 
Date.getMonthName = function() {  
    return this.monthNames[this.getMonth()];  
}

Reply

Marsh Posté le 16-09-2005 à 12:05:03    

DateEx = Date
=> DateEx hérite de Date
 
puis
DateEx.prototype.taNouvelleFonctionMember = function () {}

gatsusat a écrit :

Date.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );  
 
Date.getMonthName = function() {  
    return this.monthNames[this.getMonth()];  
}


 :non:  
Il veut un type DateEx héritant de Date
 
Donc  

var DateEx = Date;
DateEx.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );  
DateEx.prototype.getMonthName = function() {  
    return this.monthNames[this.getMonth()];  
}


normalement :o


Message édité par masklinn le 16-09-2005 à 12:08:22

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-09-2005 à 12:28:21    

ok merci, je teste ça lundi, je parts en weekend là :) (vive les RTT...)

Reply

Marsh Posté le 16-09-2005 à 12:48:23    

>>> var DateEx = Date;
>>> DateEx.prototype.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
>>> DateEx.prototype.getMonthName = function() {return this.monthNames[this.getMonth()]; }
function () { return this.monthNames[this.getMonth()]; }
>>> d = new DateEx();
Fri Sep 16 2005 12:48:07 GMT+0200
>>> d.getMonthName();
September


:o


Message édité par masklinn le 16-09-2005 à 12:50:07

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-09-2005 à 10:46:08    

merci, ça marche impec :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed