Рекурсивный перебор вложенных объектов на JavaScript

Рекурсивный перебор вложенных объектов на JavaScript

JavaScript

var fractal = {
    a1: {
        b1: {
            c: 1
        },
        b2: {
            c: 222
        },
        b3: {
            c: {
                d: 33,
                e: 2.5,
                f: {
                    g: 9999,
                    h: {
                        i: {
                            j: 1001,
                            k: 'строка',
                            l: [1,2,3],
                            m: function() {}
                        }
                    }
                }
            }
        }
    }
}

getFiniteValue(fractal);

function getFiniteValue(obj) {
    getProp(obj);
    	
    function getProp(o) {
        for(var prop in o) {
            if(typeof(o[prop]) === 'object') {
                getProp(o[prop]);
            } else {
            		document.write('Finite value: '+o[prop]+'<br>')
            }
        }
    }
}