--- title: Object.prototype.__defineSetter__() slug: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ tags: - Deprecated - Depreciado - JavaScript - Method - Object - Objeto - Prototipo - Prototype - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ ---
Esta funcionalidade está depreciada em favor da definição de setters usando a sintaxe de inicialização de objeto ou a API {{jsxref("Object.defineProperty()")}}.
Entretando, como ele é largamente implementado e usado na Web, é bem improvável que os navegadores vão parar de implementá-lo.
O método __defineSetter__ vincula uma propriedade de um objeto a uma função a ser chamada quando é feita uma tentativa de atribuir algo a aquela propriedade.
obj.__defineSetter__(prop, fun)
propfunfunction(val) { . . . }
valprop.{{jsxref("undefined")}}.
O método __defineSetter__ permite um {{jsxref("Operators/set", "setter", "", 1)}} ser definido a um objeto pré-existente.
var o = {};
o.__defineSetter__('value', function(val) { this.anotherValue = val; });
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Usando o operador set
var o = { set value(val) { this.anotherValue = val; } };
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
// Usando Object.defineProperty
var o = {};
Object.defineProperty(o, 'value', {
set: function(val) {
this.anotherValue = val;
}
});
o.value = 5;
console.log(o.value); // undefined
console.log(o.anotherValue); // 5
| Especificação |
|---|
| {{SpecName('ESDraft', '#sec-object.prototype.__defineSetter__', 'Object.prototype.__defineSetter__()')}} |
{{Compat("javascript.builtins.Object.defineSetter")}}