Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

360
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!