Hola:
En tu último ejemplo estás intentando acceder a un objeto que no se ha declarado... si quieres acceder a un objeto, al menos debes esperar a que se cargue (o se declare)...
window.onload = alert(document.datos.text.value);
No lo he probado, pero sin ese onload, las declaraciones deben hacerse antes de su referenciación...
Saludos