--- 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)
prop
fun
function(val) { . . . }
val
prop
.{{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")}}