JavaScript | handler.set() Method

The handler.set() method in JavaScript is a trap for setting a property value. This method returns a boolean value.

Syntax:

const p = new Proxy(target, {
  set: function(target, property, value, receiver) {
  }
});

Parameters: This method accept four parameters as mentioned above and described below:

  • target: This parameter holds the target object.
  • property: This parameter holds the name or Symbol of the property.
  • value: This parameter holds the new value of the property.
  • receiver: This parameter holds the object to which the assignment was originally directed.

Return value: This method always return a boolean value.

Below examples illustrate the handler.set() Method in JavaScript:



Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

function gfg() {
  this.users = "Millions";
}
  
const handler1 = {
  set(obj, prop, value) {
    if ((prop === 'users') && ((value % 2) !== 0)) {
      console.log('GEEKSFORGEEKS : Computer Science Portal');
    } else {
      return Reflect.set(...arguments);
    }
  }
};
  
const gfg1 = new gfg();
const proxy1 = new Proxy(gfg1, handler1);
proxy1.users = 1;
  
console.log(proxy1.users);

chevron_right


Output:

"GEEKSFORGEEKS : Computer Science Portal"
"Millions"

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

const p = new Proxy({}, {
  set: function(target, prop, value, receiver) {
    target[prop] = value;
    console.log('property set: ' + prop + ' = ' + value);
    return true;
  }
})
  
console.log('a' in p);  
  
p.a = 10;             
console.log('a' in p);  
console.log(p.a); 
  
var x = { foo: 1 };  
var proxy = new Proxy(x, {  
  set: function(target, name, value, proxy) {    
target[name] = value+" --> "+ value.toUpperCase();  
  }  
});  
proxy.foo = 'geeksforgeeks';  
console.log(x.foo);

chevron_right


Output:

false
"property set: a = 10"
true
10
"geeksforgeeks --> GEEKSFORGEEKS"

Supported Browsers: The browsers supported by handler.set() method are listed below.

  • Google Chrome
  • Firefox
  • Opera
  • Safari
  • Edge

full-stack-img




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.