Bonanza
Email
Enterprise Service
menu
Email
Enterprise Service
Submit
Basic information
Waiting for a reply
Your form has been submitted. We'll contact you in 24 hours.
Close
Home/ Blog/ JavaScript Proxies: Usage and Functionality Explained

JavaScript Proxies: Usage and Functionality Explained

Author:PYPROXY
2024-05-28 16:40:23

JavaScript Proxies: Usage and Functionality Explained

In JavaScript, Proxies are a powerful tool that enables you to intercept and customize the fundamental operations of an object. They provide a layer of abstraction between the target object and the code that interacts with it. Proxies are often used for tasks like logging, validation, and data modification before it reaches the actual object.

1. What is a Proxy?

A Proxy in JavaScript is a wrapper or placeholder for another object, called the target. The Proxy allows you to define custom behavior for fundamental operations such as property lookup, assignment, enumeration, function invocation, etc. on the target object.

2. Creating a Proxy

To create a Proxy, you use the Proxy constructor, which takes two arguments: the target object and a handler object that defines the traps for the fundamental operations.

javascript

const target = {}; 
const handler = { 
  get(target, propKey, receiver) { 
    console.log(`Getting ${propKey}`); 
    return Reflect.get(...arguments); 
  }, 
  set(target, propKey, value, receiver) { 
    console.log(`Setting ${propKey} to ${value}`); 
    return Reflect.set(...arguments); 
  } 
}; 
 
const proxy = new Proxy(target, handler);

In the above example, we have a target object {} and a handler object with get and set traps. The Proxy constructor is used to create a new proxy object proxy.


3. Proxy Traps

The handler object can define traps for various operations. Some common traps are:

get(target, propKey, receiver): Intercepts reading of a property.

set(target, propKey, value, receiver): Intercepts writing to a property.

has(target, propKey): Intercepts the in operator.

deleteProperty(target, propKey): Intercepts the delete operator.

apply(target, thisArg, argumentsList): Intercepts function calls.

construct(target, argumentsList, newTarget): Intercepts the new operator.


4. Using Proxies

Proxies can be used in various scenarios. For example, you can use them to log all property accesses on an object:

javascript

const target = { 
  name: 'John', 
  age: 30 
}; 
 
const handler = { 
  get(target, propKey, receiver) { 
    console.log(`Accessing ${propKey}`); 
    return Reflect.get(...arguments); 
  } 
}; 
 
const proxy = new Proxy(target, handler); 
 
console.log(proxy.name); // Logs: Accessing name, then John


Or, you can use Proxies to implement validation or data modification before it reaches the target object:


javascript

const handler = {

set(target, propKey, value, receiver) {

if (propKey === 'age' && typeof value !== 'number') {

throw new Error('Age must be a number');

}

return Reflect.set(...arguments);

}

};

const proxy = new Proxy(target, handler);

proxy.age = 'thirty'; // Throws an error


Proxies in JavaScript provide a powerful mechanism to intercept and customize the behavior of objects. They are especially useful for tasks like logging, validation, and data modification. By defining traps in the handler object, you can intercept fundamental operations on the target object and perform custom actions before or after the operation is executed.