Salut, pour pouvoir faire une boucle, tu dois avoir un élément qui soit iterable, c'est à dire un tableau, un string. Un objet est iterable egalement mais via des méthodes spécifiques comme for...in par exemple .
Ici la méthode get.PrototypeOf ne renvoie pas un tableau mais le type de prototype de l'objet, il n'est donc pas iterable.
Salut, pour pouvoir faire une boucle, tu dois avoir un élément qui soit iterable, c'est à dire un tableau, un string. Un objet est iterable egalement mais via des méthodes spécifiques comme for...in par exemple .
Ici la méthode get.PrototypeOf ne renvoie pas un tableau mais le type de prototype de l'objet, il n'est donc pas iterable.
- Edité par NadfriJS il y a environ 1 heure
Merci mais ça je l'avais compris.. Je cherche juste un moyen de faire ça ?
Bonjour tu arrive déjà à récupéré la liste de noms de propriété de l'objet via:
var propertyNames = Object.getOwnPropertyNames(actualPerso);
Normalement lors du forEach tu as juste à vérifié si la valeur de la propriété et une fonction (propertyNames contient aussi le nom des propriétés qui contiennent des fonctions, donc des méthodes)
Pour vérifié si une valeur et une fonction tu peut utilisé l'operateur instanceof sur l'objet natif Function
var actualPerso = getPersoByName(selectPerso.value, allPersos);
var targetPerso = getPersoByName(selectTarget.value, allPersos);
// var methodsNames = Object.getPrototypeOf(actualPerso);
var propertyNames = Object.getOwnPropertyNames(actualPerso);
if (!actualPerso || !targetPerso || !methodsNames || !propertyNames)
return;
var valueProperties = [];
var methods = [];
propertyNames.forEach( (propertyName) => {
const value = actualPerso[propertyName];
valueProperties.push(value);
// si la valeur de la propriété une Fonction, la propriété et une méthode.
if(value instanceof Function) {
methods.push(value);
}
});
// for (var method of methodsNames){
// if (method.name === selectAttaque.value){
// actualPerso.method(targetPerso);
// }
// }
Aussi, je tiens à m'excuser car de toute évidence vous n'avez pas compris réellement ce que je voulais faire.
Ce que je voudrais faire (si c'est possible):
Dans le input j'ai: defaultAttaque -> c'est le nom de la méthode dans ma classe.
Si ce nom existe dans
getPrototypeOf
Alors, exécuter la méthode qui lui est propre, mais tout ça dynamiquement sans faire par exemple:
if (methodName === "defaultAttaque"){
perso.defaultAttaque...
}
else if (.... )
..
Merci
- Edité par AlexisW09 2 novembre 2021 à 2:25:42
Utiliser les méthodes dynamiquement
× 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.
La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]
suggestion de présentation.