Object.prototype.__defineSetter__()
Aviso: Esta funcionalidade está depreciada em favor da definição de setters usando a sintaxe de inicialização de objeto ou a API 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.
Sintaxe
obj.__defineSetter__(prop, fun)
Parâmetros
prop
Uma cadeia de caracteres (string) contendo o nome da propriedade que vai ser vinculada a função dada.
fun
A função a ser chamada quando houver uma tentativa de atribuir na propriedade especificada. Esta função toma a forma
jsfunction(val) { . . . }
val
Um apelido para a variável que contém o valor que se tentou atribuir a
prop
.
Valor de retorno
Descrição
O método __defineSetter__
permite um setter ser definido a um objeto pré-existente.
Exemplos
Não padronizados e forma depreciada
var o = {}; o.__defineSetter__("value", function (val) { this.anotherValue = val; }); o.value = 5; console.log(o.value); // undefined console.log(o.anotherValue); // 5
Formas compatíveis padronizadas
// 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ções
Specification |
---|
ECMAScript® 2026 Language Specification # sec-object.prototype.__defineSetter__ |