Existe-t-il une méthode ou une propriété 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: Y a-t-il une méthode comme celle-là dans Jquery?
Je vous remercie.
Réponses:
la source
for..in
voie est l'approche standard.TypeError: '[object Object]' is not a function (evaluating 'obj(m)')
m instanceof Function
?Rappelez-vous que techniquement, les objets javascript 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 dans un objet tout comme vous pouvez énumérer les propriétés. Ceci (ou quelque chose de proche) devrait fonctionner:
Il y a des complications à cela car certaines propriétés des objets ne sont pas énumérables et vous ne pourrez donc pas trouver toutes les fonctions de l'objet.
la source
Vous pouvez utiliser
console.dir(object)
pour écrire les propriétés des objets dans la console.la source
Dans les navigateurs modernes, vous pouvez utiliser
Object.getOwnPropertyNames
pour obtenir toutes les propriétés (énumérables et non énumérables) sur un objet. Par exemple:Notez que cela ne récupère que les propriétés propres , donc il ne retournera pas les propriétés trouvées ailleurs sur la chaîne de prototypes. Cependant, cela ne semble pas être votre demande, je suppose donc que cette approche est suffisante.
Si vous souhaitez uniquement voir les propriétés énumérables , vous pouvez utiliser à la place
Object.keys
. Cela renverrait la même collection, moins laconstructor
propriété non énumérable .la source
Les méthodes peuvent être inspectées dans la chaîne prototype de l'objet à l'aide des outils de développement du navigateur (F12):
ou plus directement
la source
Dans ES6:
la source
pour moi, le seul moyen fiable d'obtenir les méthodes de la classe d'extension finale, était de faire comme ceci:
la source
Je suis sur un téléphone sans point virgule :) mais c'est l'idée générale.
la source
Vous pouvez simplement boucler sur le prototype d'un constructeur et extraire toutes les méthodes.
la source
le meilleur moyen est:
utilisez 'let' uniquement dans es6, utilisez 'var' à la place
la source
Dans Chrome est
keys(foo.prototype)
. Retours["a", "b"]
.Voir: https://developer.chrome.com/devtools/docs/commandline-api#keysobject
Edition ultérieure: si vous avez besoin de le copier rapidement (pour des objets plus gros), faites-le
copy(keys(foo.prototype))
et vous l'aurez dans le presse-papiers.la source
Obtenez les noms de méthode:
Ou, obtenez les méthodes:
la source