Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

110
Vistas
No se puede redefinir la propiedad al intentar cambiar la propiedad de una variable global

¿Cómo podemos establecer getter/setter personalizado en una variable global ya existente? Un enfoque directo falla:

 var myVar; { let _myVar = myVar; delete myVar; Object.defineProperty(window, "myVar", { get() { return _myVar; }, set(val) { _myVar = val; } }); }

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

var myVar;

Según este documento :

Cualquier propiedad declarada con var no se puede eliminar del ámbito global o del ámbito de una función.

Por lo tanto, no se aplicará delete myVar , y es por eso que no puede volver a establecer un valor para myVar con defineProperty .

Para una prueba simple, puede intentar registrar el valor de myVar después de delete myVar .

 var myVar = 5; //set a value for `myVar` { let _myVar = myVar; delete myVar; //delete `myVar` console.log(myVar); //it's still 5 Object.defineProperty(window, "myVar", { get() { return _myVar; }, set(val) { _myVar = val; } }); }

Para una posible solución, puede establecer explícitamente una propiedad en el objeto de la window que se considera una variable global.

 window.myVar = 5; //set a value for `window.myVar` { let _myVar = window.myVar; delete window.myVar; console.log(window.myVar); //`undefined` as expected Object.defineProperty(window, "myVar", { get() { return _myVar; }, set(val) { _myVar = val; } }); }

Solo una nota al margen que, en términos de uso de variables globales, var y window no son diferentes. Puede declarar window.myVar , pero puede usar myVar (sin window ) directamente.

 window.myVar = 5; //set a value for `window.myVar` { let _myVar = myVar; delete window.myVar; console.log(window.myVar); //`undefined` as expected Object.defineProperty(window, "myVar", { get() { return _myVar; }, set(val) { _myVar = val; } }); console.log(myVar); //set it again with `defineProperty` }

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda