function parseOb (ob) {
	for(var key in ob) 
	{
		var massVal = []
		var massMore = []
		massVal.push(key)
		massMore.push(ob[key])
		if (ob[key] instanceof Object)
		{
			parseOb(ob)
		}
	}
}
var obj = {val: 1, more: { val: 2, more: { val: 3, more: { val: 4, more: 0 } } } };
parseOb(obj);
ругается 
Uncaught RangeError: Maximum call stack size exceeded
ЗЫ, мне нужно понять если следущий more объект то взять его имя (val) и так пока незакончатся все more (следуя вашему совету поменял "stop" на 0)