Как уже говорили другие, DOM ( D ocument O bject M odel) по сути является API, который используется для манипулирования HTML (или XML) document - обычно с использованием JavaScript, поскольку это язык, который мы используем в браузере, но не всегда, поскольку существуют DOM-подобные API для управления этими документами на других языках на стороне сервера или на рабочем столе, для пример: http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-summary.html.
JavaScript - это просто язык программирования. Это де-факто стандартный язык сценариев для большинства (если не для всех) веб-браузеров, и поэтому на практике большую часть времени, когда вы пишете сценарии манипулирования DOM для запуска на стороне клиента, вы работаете с и DOM, и JavaScript одновременно.
Однако, это не должно быть так. Кто-то может написать веб-браузер (или плагин для веб-браузера), который позволяет программистам писать свои сценарии манипулирования DOM на Python, Ruby, C, Scheme и т. Д. (На самом деле JavaScript начал жизнь в Netscape как схема).
Кроме того, существуют интерпретаторы JavaScript (и даже компиляторы), которые полностью работают вне веб-браузеров. На самом деле, если вы хотите понять, что является основным языком JavaScript, вы можете попробовать немного написать сценарии, используя Mozilla's Rhino: http://www.mozilla.org/rhino/. Там нет DOM по умолчанию, нет оконного объекта, ничего не связано с браузером по умолчанию (хотя вы можете импортировать некоторые пакеты Java DOM).
Я бы также рекомендовал прочитать старую спецификацию JavaScript 1.5 в MDC (http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide) и некоторые их материалы в DOM (http://developer.mozilla.org/en/DOM).