En javascriptwindow es el objeto global, lo que significa que cada objeto en el ámbito global es un elemento secundario de window. Entonces ¿por qué me da este resultado: console.log(window.foo); // N
JavaScript hace que sea fácil sobrescribir las propiedades y funciones del objeto global. Me gustaría encontrar una forma de verificar si la versión original de una propiedad global ha sido reemplazad