Estructura de árbol

En la jerga informática se suele usar mucho el término “estructura de árbol”,  que significa una dependencia de unas cosas con otras,  en donde el objeto más importante es la raíz; y en una página web, la raíz es la propia ventana (el objeto window).

De dicho objeto window, se desprenden unas cuantas ramas que a la vez, en algunos casos, son objetos y en otros no, estos últimos se podrían considerar simples “hojas”, pero en lenguaje informático creo que es mejor decir que se trata de atributos o propiedades

El código que a continuación se presenta, permite destripar el objeto window:

function destriparWindow()	{
	var tripas = "destripando el objeto <u>window</u>";
	dato = window;
	for(esto in dato)  tripas += "<br />" + esto + " = " + dato[esto];
	return tripas;
}

Si se quisiera mostrar las tripas de window en una capa podríamos crear esa capa vacía y con un identificador. Ejemplo: <div id=”despiece_de_window” >, y el botón para activar el script podría estar definido así:

<button
 onclick="with 
(document.getElementById('despiece_de_window')) innerHTML = destriparWindow()" >
Destripar el objeto window
</button >

El siguiente espacio contiene el script y las definiciones de la capa y el botón para que pueda ver los resultados:




Destripar el objeto window

Según  el resultado obtenido en el recuadro informativo, después de activar el script, podemos ver que dependen del objeto window una buena cantidad de objetos (o tal vez sea mejor decir sub-objetos). Entre ellos podemos encontrar document, location, el propio objeto window, self, etc. que nos permite deducir el próximo paso: qué tal si modificamos nuestro destripador del objeto window, permitiendo un parámetro: un objeto para destripar.

Bueno, como yo ya lo hice, lo propongo como ejercicio, por ejemplo: en vez de llamarse: “destriparWindow()” podría ser “destriparObjeto()” o simplemente “destripar()”. El parámetro será el objeto a destripar, así que la resolución del ejercicio pasaría por cambiar las coincidencias del objeto window en el script por lo que se pasa como parámetro. En foros del web pueden hacer las preguntas que quieran para esta tarea.

Otros objetos para destripar

La lista de objetos para destripar puede ser inmensa, incluso se pueden destripar nuevos objetos creados dinámicamente.

Objetos interesantes para destripar:

  • document
  • document.frames
  • location
  • document.body
  • document.body.childNodes
  • document.getElementById(‘despiece_de_window’).parentNode

Conclusiones

Antes de terminar, me gustaría prevenir a aquellos osados lectores que se les haya pasado por la cabeza hacer un destripador recursivo, que en el momento que encuentre un objeto “destripable” lo destripe sin más. No sé si habrán notado que el objeto window tiene como rama desprendiéndose de sí otro objeto window. Y es que una de las características de esta estructura de árbol es que contiene nodos que hacen referencia a sí mismos, de esta forma un sistema recursivo generaría un “bucle infinito”, cosa que todo programador sabe que debe evitarse.

Un buen ejemplo a manera de conclusión es: un destripador que hice con anterioridad y que sirvió de semilla para escribir este artículo: Destripador web.