El objeto de window global almacena propiedades específicas del entorno (por ejemplo, window.innerHeight ).
Pero si imprimimos window a la consola, veremos las propiedades resaltadas en un color diferente.
Estos incluyen Array , Object , etc., aunque pensé que eran objetos internos.
Tengo algunas preguntas:
Array en Node.js, por ejemplo?Gracias.
En los primeros días de Javascript, había un símbolo global maestro y todo lo que estaba disponible en el ámbito global, ya fuera parte del lenguaje mismo o parte del entorno del navegador, era una propiedad de ese maestro global.
En el navegador, ese maestro global es el objeto de window . Por lo tanto, verá muchas cosas en el objeto de la window que están disponibles globalmente, como el constructor Array .
Supongo que este es un efecto secundario del hecho de que Javascript se diseñó primero para ejecutarse en un navegador y no era inicialmente un lenguaje completamente independiente con una especificación independiente.
Las revisiones más recientes a la especificación del idioma ya no agregan algunas cosas nuevas al objeto de la window . Por ejemplo, cuando declara una class ES6 como:
class Foo { constructor(greeting) { this.greeting = greeting; } } No encontrará Foo en el objeto de la window , aunque puede estar disponible globalmente en el navegador.
Como han dicho otros, la diferencia de color en la salida de depuración tiene que ver con si los símbolos son enumerables o no, lo cual es una distinción técnica sobre si la propiedad aparece en algo como Object.keys() o en un bucle for/in . La propiedad todavía está allí y es accesible de cualquier manera.