Me gustaría crear propiedades anidadas en el objeto de la ventana en una línea si es posible, y solo si no existen.
¿Hay una manera de simplemente esto?
window.level1 = window.level1 || {} window.level1.level2 = window.level1.level2 || {} windows.level1 puede contener datos en ciertas condiciones, por lo que no se puede sobrescribir.
Intenté algo como lo siguiente, pero aún arroja Uncaught TypeError: Cannot read properties of undefined (reading 'level2')
window.level1.level2 = (window.level1 || {}).level2 || {}¿Es esto posible en absoluto en una línea? ¿Si es así, cómo? Y si hay una solución, sería genial que también funcionara en navegadores antiguos.
Necesitarás diferentes anidamientos:
((window.level1 = window.level1 || {}).level2 = window.level1.level2 || {}).level3 = …;o usar una asignación nula para abreviar (y no volver a escribir los valores existentes en la propiedad):
((window.level1 ??= {}).level2 ??= {}).level3 = …;Pruebe este enfoque:
window.level1 = window.level1 ? window.level1.level2 ??= {} : { level2: {} }; console.log(window.level1); .as-console-wrapper{min-height: 100%!important; top: 0}