Это действительно не похоже на работу для объектно-ориентированного программирования. Сексуальная рекурсивная функция будет работать намного лучше.
var output=[];
function scan(element) {
var children=element.childNodes;
for (var child in children){
if (children[child].nodeValue) {
output.push(children[child].nodeValue);
}else {
scan(children[child]);
};
};
};
scan(window.document.body);
Это не разбивает текст на отдельные слова и даже не создает JSON, но даст вам список отдельных слов. Вам все еще нужно сделать некоторую очистку текста. За 2 секунды тестирования я обнаружил, что ему нравится отображать текст всего, включая javascript и переводы строки (\ n). Возможно, если я захочу, я добавлю больше кода. Но это должно помочь вам.
Для преобразования в JSON попробуйте код toJSON Дугласа Крокфорда. Просто погуглите.