Comment lire les propriétés d'un objet en utilisant une fonction récursive en Javascript?

Je me demande si quelqu'un peut me montrer la bonne direction à ce sujet. Quand j'ai un objet, je lis habituellement ses propriétés via FOR IN LOOP. Et puisque je sais quelles sont les propriétés parce que j'ai créé l'objet même, je sais quelles sont les clés et leurs valeurs. J'aimerais savoir s'il existe d'autres façons, comme l'approche récursive de lire un objet et ses propriétés.

Voici donc l'objet d'un exemple:

var mObj = {}; mObj.mArr = []; mObj.mArr.push({id:['id1','id2','id3']}); mArr.push({days:['Monday','Tuesday','Wednesday','Thursday']}); mObj.mArr.push({colors:['orange','red','blue','green','yellow','white']}); 

Comme vous pouvez le constater, j'ai déclaré le mObj et, au sein de celui-ci, j'ai déclaré mArr comme un tableau. Et puis je pousser trois objets dans mArr:

  1. Id
  2. journées
  3. couleurs

Si je voulais savoir la longueur du mArr, j'écrirais quelque chose comme:

 alert(mObj.mArr.length); 

Et si je voulais boucler l'objet, j'aurais quelque chose comme ça:

 for(var a in mObj.mArr[0]) { alert(mObj.mArr[0][a]); } 

Je me demande si je peux juste une fonction et passer l'objet parent qui se trouve être "mObj" ici, et cette fonction récursive serait par le biais de "mObj" et liste toutes ses propriétés de la tête aux pieds.

J'apprécierais toute contribution à ce sujet, s'il vous plaît.

Merci beaucoup.

Voici un exemple de base:

 var mObj = {}; mObj.mArr = []; mObj.mArr.push({id:['id1','id2','id3']}); mObj.mArr.push({days:['Monday','Tuesday','Wednesday','Thursday']}); mObj.mArr.push({colors:['orange','red','blue','green','yellow','white']}); function r(obj) { if (obj) for (var key in obj) { if (typeof obj[key] == "object") r(obj[key]); else if (typeof obj[key] != "function") console.log(obj[key]) } return; } r(mObj); 

S'il y a un objet qui n'est pas une fonction, appelez la fonction à nouveau, sinon, la console enregistre la valeur si elle n'est pas une fonction.