comment crée une fonction JavaScript comme .toLowerCase() ? ... - HTML/CSS - Programmation
Marsh Posté le 13-09-2005 à 16:15:23
monobjet.MaNouvelleFonction = function(titi) {
this.bidule
action.machin
}
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 () {
}
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
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
Marsh Posté le 13-09-2005 à 17:51:19
masklinn a écrit : J'ai le droit de douter |
LOL, RAC de tes doutes !
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.
(RAC = rien à cirer = vive les acronymes à la con)
Marsh Posté le 13-09-2005 à 17:52:54
ZeBorG a écrit : pseudo objet |
Marsh Posté le 13-09-2005 à 18:02:21
"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.
Marsh Posté le 13-09-2005 à 18:21:38
ZeBorG a écrit : |
C'est juste qu'en JS l'objet fonctionne par prototypes et non par classes
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
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 :
|
Ainsi, sur mes objets Date, je peux directement appeler getMonthName comme ceci :
Code :
|
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 :
|
Voici comment j'ai essayé de procéder :
Code :
|
Malheureusement, la console javascript de firefox m'indique que this.getMonth n'existe pas. Comment faire ?
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()];
}
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" ); |
Il veut un type DateEx héritant de Date
Donc
var DateEx = Date; |
normalement
Marsh Posté le 16-09-2005 à 12:28:21
ok merci, je teste ça lundi, je parts en weekend là (vive les RTT...)
Marsh Posté le 16-09-2005 à 12:48:23
>>> var DateEx = Date; |
Marsh Posté le 13-09-2005 à 16:08:58
...je m'explique :
à la place d'avoir :
et donc l'appeler de la façon suivante :
je souhaite l'appeler comme ceci :
comme les fonction .toLowerCase() .toUpperCase() .innerHTML etc...
vous m'avez compris ?