Comment inspecter les objets Javascript

Comment puis-je inspecter un Objet dans une boîte d'alerte? Normalement, alerter un objet ne fait que jeter le nom de code:

alert(document);

Mais je veux obtenir les propriétés et méthodes de l'objet dans la boîte d'alerte. Comment puis-je obtenir cette fonctionnalité, si possible? Ou il y en a d'autres suggestions?

en particulier, je suis à la recherche d'une solution pour un environnement de production où console.la bûche et la coupe-feu ne sont pas disponibles.

92
demandé sur Peter David Carter 2011-03-18 23:21:56

8 réponses

Le for - in boucles pour chaque propriété d'un objet ou d'un tableau. Vous pouvez utiliser cette propriété pour obtenir la valeur ainsi que de les modifier.

Note: les propriétés privées ne sont pas disponibles pour l'inspection, sauf si vous utilisez un "espion"; fondamentalement, vous outrepassez l'objet et écrivez un code qui fait une boucle for-in à l'intérieur du contexte de l'objet.

pour dans ressemble à:

for (var property in object) loop();

Some code échantillon:

function xinspect(o,i){
    if(typeof i=='undefined')i='';
    if(i.length>50)return '[MAX ITERATIONS]';
    var r=[];
    for(var p in o){
        var t=typeof o[p];
        r.push(i+'"'+p+'" ('+t+') => '+(t=='object' ? 'object:'+xinspect(o[p],i+'  ') : o[p]+''));
    }
    return r.join(i+'\n');
}

// example of use:
alert(xinspect(document));

Edit: il y a quelque temps, j'ai écrit mon propre inspecteur, si vous êtes intéressé, je suis heureux de partager.

Edit 2: J'en ai quand même écrit une.

56
répondu Christian 2011-03-18 21:13:50

et alert(JSON.stringify(object)) avec un navigateur moderne?

dans le cas de TypeError: Converting circular structure to JSON , voici plus d'options: comment sérialiser le noeud DOM à JSON même s'il y a des références circulaires?

la documentation: JSON.stringify() fournit des informations sur le formatage ou la mise en forme de la sortie.

186
répondu noiv 2017-05-23 12:10:26

Utiliser console.dir(object) et le plugin Firebug

39
répondu Ranjeet 2016-05-03 10:29:52

il y a peu de méthodes:

 1. typeof tells you which one of the 6 javascript types is the object. 
 2. instanceof tells you if the object is an instance of another object.
 3. List properties with for(var k in obj)
 4. Object.getOwnPropertyNames( anObjectToInspect ) 
 5. Object.getPrototypeOf( anObject )
 6. anObject.hasOwnProperty(aProperty) 

dans un contexte de console, parfois le .le constructeur ou l' .prototype peut-être utile:

console.log(anObject.constructor ); 
console.log(anObject.prototype ) ; 
17
répondu brotherol 2013-11-02 14:11:40

utilisez votre console:

console.log(object);
15
répondu Richard Torcato 2012-11-22 20:36:12
var str = "";
for(var k in obj)
    if (obj.hasOwnProperty(k)) //omit this test if you want to see built-in properties
        str += k + " = " + obj[k] + "\n";
alert(str);
9
répondu moe 2011-03-18 20:47:51

c'est une escroquerie flagrante de L'excellente réponse de Christian. Je viens de le rendre un peu plus lisible:

/**
 * objectInspector digs through a Javascript object
 * to display all its properties
 *
 * @param object - a Javascript object to inspect
 * @param result - a string of properties with datatypes
 *
 * @return result - the concatenated description of all object properties
 */
function objectInspector(object, result) {
    if (typeof object != "object")
        return "Invalid object";
    if (typeof result == "undefined")
        result = '';

    if (result.length > 50)
        return "[RECURSION TOO DEEP. ABORTING.]";

    var rows = [];
    for (var property in object) {
        var datatype = typeof object[property];

        var tempDescription = result+'"'+property+'"';
        tempDescription += ' ('+datatype+') => ';
        if (datatype == "object")
            tempDescription += 'object: '+objectInspector(object[property],result+'  ');
        else
            tempDescription += object[property];

        rows.push(tempDescription);
    }//Close for

    return rows.join(result+"\n");
}//End objectInspector
6
répondu vaFyreHeart 2013-12-11 07:52:50

Voici mon inspecteur d'objets qui est plus lisible. Parce que le code prend trop de temps à écrire ici vous pouvez le télécharger à http://etto-aa-js.googlecode.com/svn/trunk/inspector.js

utiliser comme ceci:

document.write(inspect(object));
5
répondu Muhammad Eko Avianto 2014-12-31 01:33:24