En DOM, ¿por qué se define childNodes en la interfaz de Nodo si solo algunos tipos de nodo pueden tener Nodos secundarios?

7

En DOM, ¿por qué se define childNodes en la interfaz Node si solo algunos tipos de nodo como Element , Document y DocumentFragement , pueden tener childNodes ?

¿Se considera esto un buen diseño? ¿En qué casos esto es admisible? Quiero decir, ¿no es esto como definir un radio en una forma de interfaz aunque sabemos que no todas las formas tienen un radio?

    
pregunta Alfredo Osorio 30.09.2013 - 17:02

3 respuestas

7

La razón simple por la que esto es parte de la especificación es que hace que sea mucho más fácil atravesar un árbol DOM. Siempre puede iterar sobre los Nodos secundarios de un Nodo, incluso si no hay ninguno. De lo contrario, deberá determinar el tipo de Nodo en cada punto del recorrido.

La razón por la que esto está bien es que childNodes tiene un valor lógico y significativo para no Elementos: una colección vacía . Por otro lado, en su ejemplo de radio, cualquier valor que pueda tener para los que no tienen elipsis no tiene ningún significado.

    
respondido por el Cyanfish 30.09.2013 - 21:12
3

¿Quién dice que solo Element s puede tener nodos secundarios? Hay muchos tipos de nodos, y varios de ellos pueden tener hijos. Los ejemplos obvios incluyen Document y DocumentFragment , ninguno de los cuales es Element s, pero ambos tienen nodos secundarios.

    
respondido por el Ross Patterson 01.10.2013 - 12:51
0

El Patrón compuesto tiene dos variantes:

  • El Componente abstracto (clase principal de hojas y compuestos) solo incluye métodos que tienen sentido en un solo elemento.
  • El Componente abstracto también incluye los métodos del Compuesto, es decir, de una colección de elementos.

Recuerde que el propósito del patrón compuesto es tratar los elementos individuales y las colecciones de dichos elementos de manera uniforme . Dada una estructura apropiada, los métodos compuestos pueden implementarse de una manera que tenga algún significado incluso en las hojas. P.ej. en el contexto del DOM, un nodo de texto no tiene hijos, y puede devolver una NodeList vacía.

Esta segunda variación del patrón Compuesto no siempre es aplicable, pero puede aumentar la elegancia del diseño en algunos casos (aún habría diseñado el DOM sin esta peculiaridad).

    
respondido por el amon 30.09.2013 - 17:23

Lea otras preguntas en las etiquetas