77 votes

Est-il un moyen d'imprimer toutes les méthodes d'un objet en javascript?

Est-il un moyen d'imprimer toutes les méthodes d'un objet en javascript?

100voto

troelskn Points 51966

Assurez-vous:

function getMethods(obj) {
  var result = [];
  for (var id in obj) {
    try {
      if (typeof(obj[id]) == "function") {
        result.push(id + ": " + obj[id].toString());
      }
    } catch (err) {
      result.push(id + ": inaccessible");
    }
  }
  return result;
}

En l'utilisant:

alert(getMethods(document).join("\n"));

6voto

Oli Points 65050

Voici un post sur JS réflexion. Il devrait faire tout ce que vous cherchez.

3voto

AnthonyWJones Points 122520

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.

1voto

WalkingRandomly Points 2065

À 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.

0voto

Neall Points 12075

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X