JavaScript | método handler.set()

El método handler.set() en JavaScript es una trampa para establecer un valor de propiedad. Este método devuelve un valor booleano.
Sintaxis: 
 

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

Parámetros: Este método acepta cuatro parámetros como se mencionó anteriormente y se describe a continuación: 
 

  • target: este parámetro contiene el objeto de destino.
  • propiedad: este parámetro contiene el nombre o el símbolo de la propiedad.
  • valor: este parámetro contiene el nuevo valor de la propiedad.
  • receptor: este parámetro contiene el objeto al que se dirigió originalmente la asignación.

Valor devuelto : este método siempre devuelve un valor booleano.
Los siguientes ejemplos ilustran el método handler.set() en JavaScript:
Ejemplo 1: 
 

javascript

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);

Producción: 
 

"GEEKSFORGEEKS : Computer Science Portal"
"Millions"

Ejemplo 2: 
 

javascript

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);

Producción: 
 

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

Navegadores compatibles: los navegadores compatibles con el método handler.set() se enumeran a continuación. 
 

  • Google Chrome 49 y superior
  • Borde 12 y superior
  • Firefox 18 y superior
  • Ópera 36 y superior
  • Safari 10 y superior

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *