JS Guide
HomeQuestionsSearchResources
Search

Built for developers preparing for JavaScript, React & TypeScript interviews.

ResourcesQuestionsSupport
HomeQuestionsSearchProgress
HomeQuestionsjavascript
PrevNext
javascript
senior
metaprogramming

What are Proxies in JavaScript and how can they be used?

proxy
metaprogramming
reflect
validation
reactive
Quick Answer

A Proxy wraps an object and intercepts fundamental operations (get, set, delete, etc.) through handler traps. They enable metaprogramming patterns like validation, logging, lazy loading, and implementing reactive systems.

Detailed Explanation

Proxy Basics:

  • new Proxy(target, handler) creates a proxy
  • target: The original object to wrap
  • handler: Object with trap methods

Common Traps:

  • get(target, prop, receiver): Property access
  • set(target, prop, value, receiver): Property assignment
  • has(target, prop): 'in' operator
  • deleteProperty(target, prop): delete operator
  • apply(target, thisArg, args): Function calls
  • construct(target, args): new operator

Use Cases:

  1. Validation: Validate values before setting
  2. Logging/Debugging: Track property access
  3. Default values: Return defaults for missing properties
  4. Reactive systems: Trigger updates on changes
  5. Access control: Restrict property access

Code Examples

Basic Proxy with validation
const validator = {
  set(target, prop, value) {
    if (prop === 'age') {
      if (!Number.isInteger(value)) {
        throw new TypeError('Age must be an integer');
      }
      if (value < 0 || value > 150) {
        throw new RangeError('Age must be between 0 and 150');
      }
    }
    target[prop] = value;
    return true;
  }
};

const person = new Proxy({}, validator);
person.name = 'Alice'; // OK
person.age = 30;       // OK
person.age = -5;       // RangeError
person.age = 'thirty'; // TypeError

Resources

MDN - Proxy

docs

JavaScript.info - Proxy and Reflect

article
Previous
What are Generators in JavaScript and when would you use them?
Next
How does JavaScript garbage collection work and how can you prevent memory leaks?