Est-il un moyen d'imprimer toutes les méthodes d'un objet en javascript?
- Comment afficher toutes les méthodes d'un objet ? (5 réponses )
Réponses
Trop de publicités?Voici un post sur JS réflexion. Il devrait faire tout ce que vous cherchez.
Jetez un coup d'œil à ce code:
function writeLn(s)
{
//your code to write a line to stdout
WScript.Echo(s)
}
function Base() {}
Base.prototype.methodA = function() {}
Base.prototype.attribA = "hello"
var derived = new Base()
derived.methodB = function() {}
derived.attribB = "world";
function getMethods(obj)
{
var retVal = {}
for (var candidate in obj)
{
if (typeof(obj[candidate]) == "function")
retVal[candidate] = {func: obj[candidate], inherited: !obj.hasOwnProperty(candidate)}
}
return retVal
}
var result = getMethods(derived)
for (var name in result)
{
writeLn(name + " is " + (result[name].inherited ? "" : "not") + " inherited")
}
Le getMethod fonction retourne l'ensemble des méthodes ainsi que la méthode est celle qui a été héritée d'un prototype.
Notez que si vous avez l'intention de l'utiliser sur des objets qui sont fournis par le contexte comme navigateur/DOM objet, alors il ne fonctionnera pas IE.
À partir d' ici:
Exemple 1: Cet exemple écrit de toutes les propriétés de la "navigator" de l'objet, en plus de leurs valeurs:
for (var myprop in navigator){
document.write(myprop+": "+navigator[myprop]+"<br>")
}
Il suffit de remplacer "navigateur" avec quel que soit l'objet qui vous intéresse et vous devriez être bon d'aller.
Comme mentionné par Anthony dans la section commentaires - Cela renvoie tous les attributs non seulement la question posée.
Oups! Ça m'apprendra à essayer de répondre à une question dans une langue que je ne connais pas. Pourtant, je pense que le code est utile mais pas ce qui était requis.
Puisque les méthodes en JavaScript sont seulement des propriétés qui sont des fonctions, la boucle for..in vais énumérer avec une exception - pour ne pas énumérer les méthodes intégrées. Autant que je sache, il n'existe aucun moyen pour énumérer les méthodes intégrées. Et vous ne pouvez pas déclarer vos propres méthodes ou des propriétés d'un objet qui ne sont pas énumérable de cette façon.