• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

256
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 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda