2011-03-23 18 views
5

console.dir(window) en Chrome:console.dir (ventana) en Firefox?

http://ecmazing.com/unsorted/console-dir-window-in-chrome.png

console.dir(window) en Firebug (en Firefox 7):

http://ecmazing.com/unsorted/console-dir-window-in-firebug.png

¿Por qué la lista de Firebug sólo un par de propiedades del objeto window? ¿Cómo puedo listar todas las propiedades globales en Firefox?

Además, ¿dónde está la propiedad __proto__ para que pueda seguir la cadena de prototipos?

+0

Voy a cambiar a Chrome como mi principal herramienta de desarrollo y depuración de JS. Porque no encontré ninguna respuesta a esto. – user907860

Respuesta

0

En FireFox, puede obtener el conjunto completo de propiedades de la ventana con console.log(window); Pero esto esencialmente lo dirigirá a la pestaña DOM para ese objeto, que le muestra las propiedades actuales del objeto.

El uso de console.dir(window); en su lugar le ofrece una instantánea de las propiedades del objeto en el tiempo de ejecución específico que usted lo solicitó. Si mira, puede hacer clic en la última instancia de "ventana" en su resultado de FireFox console.dir(window); para ver las propiedades relacionadas con el objeto ventana en el momento de la llamada a la función.

+0

Eso se vinculará a la pestaña DOM de Firebug.Pero eso solo muestra una lista de 40-50 propiedades. ¿Donde esta el resto? Las propiedades globales de ECMAScript no se encuentran. Además, faltan todos los métodos. –

+0

Hmm, sí, tienes razón, estoy tratando de encontrar "window.Date" en el objeto FireFox impreso, pero no puedo ... aunque puedes verlo claramente en la impresión de Chrome. – potench

2

Parece que Firebug está filtrando las propiedades que no satisfacen hasOwnProperty. Por ejemplo, al invertir el DOM con Firefox 4/Firebug 1.7, aparecen navigator y addHandler, pero confirm no. Observe:

>>> window.hasOwnProperty('confirm') 
false 
>>> window.hasOwnProperty('addHandler') 
true 
>>> window.hasOwnProperty('navigator') 
true 

Sin embargo, Date no se presenta, y:

>>> window.hasOwnProperty('Date') 
true 

Por lo que también parece estar filtrando los constructores mundiales, lo que parece ser confirmadas por comment 9 en this bug. No sé qué función (es) se usa (n) para filtrar estos constructores.

De cualquier manera, no he encontrado una manera de evitar esto. Si lo hago, te lo haré saber, pero creo que simplemente no hay forma de hacer lo que quieres al momento de escribir.

+0

Entonces, básicamente, apesta. La 'consola.dir (ventana)' de Chrome es el verdadero negocio: enumera todo (varios cientos de propiedades) y le permite seguir la cadena del prototipo hasta 'Object.prototype'. –

+0

¿Qué es 'addHandler'? Esa no es una propiedad global afaik. –

+0

@ Šime Sí, desafortunadamente parece una conclusión apta. Por extraño que parezca, no puedo encontrar ninguna información sobre 'addHandler', ni siquiera en la excelente documentación de Javascript de Mozilla. Parece que podría haber sido algo específico de esa página: cuando agrego 'window.addHandler' manualmente a través de la consola, aparece en la pestaña DOM. Todo parece bastante contradictorio, tal vez deberías considerar presentar un informe de error con Firebug, estoy seguro de que pueden responder con más detalle. – Aistina

1

La gran mayoría de las opciones parecen estar escondido/desactivados por defecto ..

A la derecha de las letras en la pestaña DOM Dom (mientras está seleccionado) de 1.9.0b1 Firebug (y 1,8 im seguro ...), hay una flecha hacia abajo.

Al hacer clic en esa opción y seleccionar todas las opciones en la sección superior (I.E. aparte de "Mostrar solo las propiedades propias" y "Mostrar solo las propiedades enumerables") nos permitió ver algunas propiedades ocultas.

Estoy seguro de que el comportamiento predeterminado solía ser mostrar todas las propiedades, y no estoy seguro de cuándo lo cambiaron, pero fue bastante frustrante hasta que encontramos esas opciones.

Espero que esto ayude a alguien más a buscar en Google lo que acabo de hacer, tratando de descubrir por qué no se puede obtener absolutamente ninguna información útil del panel DOM de firebug.

Cuestiones relacionadas