Comment faire pour obtenir l'objet de ses méthodes?
Est-il une méthode ou des biens pour obtenir toutes les méthodes d'un objet? Par exemple:
function foo() {}
foo.prototype.a = function() {}
foo.prototype.b = function() {}
foo.get_methods(); //returns ['a', 'b'];
Mise à JOUR: il y a la méthode, comme ça en Jquery?
Merci.
- Voir aussi: stackoverflow.com/questions/3252406/...
Vous devez vous connecter pour publier un commentaire.
for..in
moyen est l'approche standard.TypeError: '[object Object]' is not a function (evaluating 'obj(m)')
m instanceof Function
?Rappelez-vous que, techniquement, les objets javascript qui n'ont pas de méthodes. Ils ont des propriétés, dont certaines peuvent être des objets de fonction. Cela signifie que vous pouvez énumérer les méthodes d'un objet, tout comme vous pouvez énumérer les propriétés. Cette (ou quelque chose de proche de ce) devrait fonctionner:
Il y a des complications, car certaines propriétés des objets ne sont pas énumérable de sorte que vous ne serez pas en mesure de trouver chaque la fonction de l'objet.
console.Write
Vous pouvez utiliser
console.dir(object)
à écrire que les propriétés des objets de la console.Dans les navigateurs modernes vous pouvez utiliser
de l'Objet.getOwnPropertyNames
pour obtenir toutes les propriétés (les deux énumérable et non énumérable) sur un objet. Par exemple:Noter que ceci ne récupère propres propriétés, afin de ne pas renvoyer les propriétés trouvées ailleurs sur la chaîne de prototype. Qui, cependant, ne semble pas être votre demande et je vais donc assumer cette approche est suffisante.
Si vous voudrais seulement voir énumérable propriétés, vous pouvez à la place utiliser
de l'Objet.les touches
. Ce serait de retour la même collection, moins le non-énumérableconstructor
propriété.Les méthodes peuvent être inspectés dans la chaîne de prototype de l'objet à l'aide du navigateur outils de développement (F12):
ou plus directement
Dans ES6:
Je suis sur un téléphone avec pas de demi-points 🙂 mais c'est l'idée générale.
la meilleure façon est:
utilisation de "laisser" qu'à l'es6, utilisez 'var' au lieu
Vous pouvez tout simplement une boucle sur le prototype d'un constructeur et d'en extraire toutes les méthodes.
pour moi, le seul moyen fiable pour obtenir les méthodes de la finale de l'extension de la classe, était de faire comme ceci:
De Chrome est
keys(foo.prototype)
. Retourne["a", "b"]
.Voir: https://developer.chrome.com/devtools/docs/commandline-api#keysobject
Plus tard edit: Si vous avez besoin de copier rapidement (pour les plus gros objets), ne
copy(keys(foo.prototype))
et vous l'aurez dans le presse-papiers.Obtenir les Noms de Méthode:
Ou profitez de la Méthodes: