Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

368
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda