Bonjour, j'ai fait une class qui contient un objet quelconque. Ce que j'aimerais faire c'est que quand on veut appeler un fonction de cet objet on fasse pas
maClass.objet.Fonction()
mais
maClass.Fonction()
(en gros je veut supprimer l'intermédiaire ). Je crois que pour cela on peut utiliser la fonction call() mais je ne vois pas du tout comment elle peut fonctionner (même avec un tuto je ne comprend toujours pas).
J'ai fait ceci :
function maClass(str)
{
var objet = this.CreateObject(str);
objet.call(this);
}
Oui je sais je pourrai redéfinir toutes le fonctions mais l'objet en question est un element html et donc il y a énormément de méthodes et d'attributs à redéfinir Surtout que je ne les connais pas tous
Et oui en effet il n'y a pas de class en JS (d'ailleurs c'est vraiment bête, il aurait pu être bien ce language ) mais bon ça y ressemble
Bon après recherche je me suis rendu compte que call() (ou apply() ) ne correspondent pas du tout à ce que je veux.
Ta solution Tiller fonctionne (après l'avoir légèrement modifié : str.hasOwnProperty(i) en this.objet.hasOwnProperty(i) et this[i] en this.objet[i]) mais cela ne correspond pas exactement à ce que je voulais, par contre merci parce que ça m'a permis de régler un autre problème
Sinon je pense que je peux me débrouiller autrement, enfin si quelqu'un à la solution je suis preneur
var lien = new maClass('a'); // ceci marche déjà
lien.onmouseover = function() {}; // par exemple
Et bien ça fasse en réalité ceci :
var lien = new maClass('a');
lien.objet.onmouseover = function() {};
En gros c'est juste pour raccourcir le code
Je ne sais pas si c'est possible mais je pense que oui.
Une possibilité serait que si on appelle une méthode qui ne fait pas partie de la class, cela appelle une méthode de l'objet je ne sais pas si on peut ; en php on pourrai faire comme ceci :
<?php
class maClass
{
$objet; // une variable qui contient l'objet
//---- ici le constructeurs et toutes les méthodes
function __call($method, $args) // si une fonction ne fesant pas partie de la class est appelée
{
$this->objet->$method($args); // on appelle la fonction de l'objet
}
}
?>
Voila pourquoi je pensait que la fonction call() pouvait résoudre mon problème
C'est sur mais ce que je voudrais serais de le faire dans la class et non en dehors (je sais je suis chiant )
Mais de toute façon c'est bon, en redéfinissant certaines fonctions je peux les rendre bien plus puissantes et pratiques : un ptit exemple juste pour les yeux :
Sympa non ?
Merci encore à Tiller qui ma donné cette idée
Voila mon problème est donc résolu
(sauf si quelqu'un sait comment faire la technique de Darkodam à partir de la class)
Fonction call()
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
mais (en gros je veut supprimer l'intermédiaire ). Je crois que pour cela on peut utiliser la fonction call() mais je ne vois pas du tout comment elle peut fonctionner (même avec un tuto je ne comprend toujours pas).