TGViewer
JavaScript JavaScript @javascript · 31.1K subscribers
Post #3062 2.72K
CHALLENGE


const handler = {
get(target, prop, receiver) {
if (prop === 'fullName') {
return `${Reflect.get(target, 'firstName', receiver)} ${Reflect.get(target, 'lastName', receiver)}`;
}
return Reflect.get(target, prop, receiver);
},
set(target, prop, value, receiver) {
if (typeof value !== 'string') {
return false;
}
return Reflect.set(target, prop, value.trim(), receiver);
},
has(target, prop) {
return prop.startsWith('_') ? false : Reflect.has(target, prop);
}
};

const person = new Proxy({ firstName: ' Clara', lastName: 'Oswald ', _secret: 'hidden' }, handler);
person.firstName = ' Clara';
person.lastName = ' Oswald';

console.log(person.fullName);
console.log('_secret' in person);
console.log(Reflect.ownKeys(person).length);
  • 🔥 8
  • ❤ 5
  • 🤔 3
  • 👍 2
More from @javascript
  1. Sep 24, 2026Post #3516
  2. Sep 24, 2026CHALLENGE class Base { static count = 0; static increment() { this.count++; return this.co…
  3. Sep 23, 2026🤩 tinyjs: Build JavaScript Desktop Apps in <10MB I built an app with this and was impress…
  4. Sep 23, 2026Post #3513
  5. Sep 23, 2026CHALLENGE function* inner() { yield 1; yield 2; return 100; } function* outer() { const re…
  6. Sep 22, 2026Post #3511
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →