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

366
Vistas
define javascript variable as a pointer, when change the pointer, the target changed?

I come across some wired code when I was learning the Vue Dependency Tracking:

function convert(obj) {
    Object.keys(obj).forEach(key => {
      let internalValue = obj[key]
      Object.defineProperty(obj, key, {
        get() {
          console.log(`getting key "${key}": ${internalValue}`)
          return internalValue
        },
        set(newValue) {
          console.log(`setting key "${key}" to: ${newValue}`)
          internalValue = newValue
          console.log(obj);
        }
      })
    })
    return obj
  }

// test
let o = {a: 'hello',b:'world'};
let convO = convert(o);
convO.b = 'javascript';
// in normal condition, change a pointer won't change the target:
let p = o['b'];
p = 'woola'
console.log('normal condition', o);
  

Inside the forEach callback function, we firstly define a variable internalValue as a pointer, which point to obj[key]. Secondly, we changed that pointer. Why the pointed target is mutated? It doesn't make any sense.

about 4 years ago · Juan Pablo Isaza
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