handler.set()

El m√©todo handler.set() captura las asignaciones de un valor a una determinada propiedad.

Sintaxis

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

Par√°metros

El m√©todo set recibe los siguientes par√°metros.this se asocia al handler.

target
El objeto objetivo.
property
El nombre de la propiedad a la que se le asignar√° el valor.
value
El nuevo valor asignado a la propiedad.
receiver
El objeto al que originalmente iba dirigida la asignación. Normalmente es el proxy. Sin embargo el manejador o set handler puede ser llamado de forma indirecta a través de un prototipo entre otros.
Por ejemplo, suponga que un escript ejecuta la sentencia obj.name = "jen", y obj no es un proxy, y no posee la propiedad .name, pero tiene un proxy en su cadena de prototipos. El manejador set de este proxy ser√° llamado y  obj ser√° pasado como el receiver.

Valor Devuelto

El m√©todo set debe devolver un valor booleano. Devolver√° true para indicar que la asignaci√≥n se ha llevado a cabo con √©xito. Si devuelve false, y la asignaci√≥n tiene lugar en modo estricto, se lanzar√° un error de tipo TypeError.

Descripción

El m√©todo handler.set captura la asignaci√≥n de un valor a una propiedad.

Qu√© intercepta

Las siguientes operaciones son capturadas:

  • Asignaci√≥n a propiedades: proxy[foo] = bar y proxy.foo = bar
  • Asignaci√≥n a propiedades heredadas: Object.create(proxy)[foo] = bar
  • Reflect.set()

Invariantes

Si los siguientes invariantes son violados, el proxy lanzar√° un TypeError:

  • El valor de la propiedad no puede ser diferente al de la correspondiente propiedad del objeto, si esta es una propiedad no configurable, o sin permisos de escritura.
  • No se puede asignar un valor a una propiedad si la correspondiente propiedad en el objeto objetivo es no configurable y tiene undefined como su atributo [[Set]].
  • En modo estricto, la devoluci√≥n de false pro parte del manejador set lanzar√° una excepci√≥n del tipo TypeError.

Ejemplos

El siguiente código captura la asignación de un valor a una propiedad.

var 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)  // false

p.a = 10               // "propiedad asignada: a = 10"
console.log('a' in p)  // true
console.log(p.a)       // 10

Especificaciones

Compatibilidad con los buscadores

BCD tables only load in the browser

Ver también