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

js
function(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

js
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

js
// 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__

Compatibilidade com navegadores

Veja também