| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Functions/set | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
Esta caracterstica est consolidada y funciona en muchos dispositivos y versiones de navegador. Est disponible en todos los navegadores desde julio de 2015.
La sintaxis set asocia la propiedad de un objeto a una funcin que ser llamada cuando haya un intento de asignar valor a esa propiedad.
{set prop(val) { . . . }}
{set [expression](val) { . . . }}
propEl nombre de la propiedad a asociar con la funcin dada.
valUn alias para la variable que contiene el valor a asignar a la propiedad.
expressionA partir de ECMAScript 2015, se puede tambin usar expresiones para nombres de propiedades computados para asociar a la funcin dada.
En JavaScript, un setter puede ser usado para ejecutar una funcin donde sea que una propiedad se intente cambiar. Los setters son regularmente usados en conjunto con getters para crear un tipo de pseudo-propiedad. No es posible tener simultneamente un setter en una propiedad que ya tiene un valor.
Tenga en cuenta lo siguiente al trabajar con setters:
set o con otra entrada de datos con la misma propiedad.
( { set x(v) { }, set x(v) { } } y { x: ..., set x(v) { } } estn prohibidos )En el siguiente ejemplo definimos una pseudo-propiedad actual al objeto lenguaje. Cuando se le asigne un valor a actual, actualiza log con ese valor:
var lenguaje = {
set actual(mensaje) {
this.log.push(mensaje);
},
log: [],
};
lenguaje.actual = "ES";
console.log(lenguaje.log); // ['ES']
lenguaje.actual = "FR";
console.log(lenguaje.log); // ['ES', 'FR']
Note que actual no est definido y cualquier intento de accederlo devolver undefined.
deleteSi desea eliminar el setter, puede simplemente aplicar delete en l:
delete lenguaje.actual;
definePropertyPara aadir un setter a un objeto existente, use Object.defineProperty()
const o = { a: 0 };
Object.defineProperty(o, "b", {
set: function (x) {
this.a = x / 2;
},
});
o.b = 10; // Ejecuta el setter, el cual asigna 10 / 2 (5) a la propiedad 'a'
console.log(o.a); // 5
Nota: Propiedades computadas son 'experimental technology', parte de la propuesta para ECMAScript 6, y no est soportado en todos los navegadores. Dar error de sintaxis en entornos no soportados.
const expr = "foo";
var obj = {
baz: "bar",
set [expr](v) {
this.baz = v;
},
};
console.log(obj.baz); // "bar"
obj.foo = "baz"; // ejecuta el setter
console.log(obj.baz); // "baz"
| Especificacin |
|---|
| ECMAScript 2027 LanguageSpecification # sec-method-definitions |
deleteObject.defineProperty()Object.prototype.__defineGetter__()Object.prototype.__defineSetter__()Esta pgina se modific por ltima vez el 29 may 2026 por colaboradores de MDN.
Partes de este contenido son 19982026 de colaboradores individuales de mozilla.org. Contenido disponible bajo una licencia Creative Commons.
| Web Proxy Viewer | New URL | Original Page |