Object.prototype.__defineSetter__()

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
function(val) { . . . }
val
Um apelido para a variável que contém o valor que se tentou atribuir a prop.

Valor de retorno

undefined.

Descrição

O método __defineSetter__ permite um setter (en-US) 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

Especificação
ECMAScript (ECMA-262)
The definition of 'Object.prototype.__defineSetter__()' in that specification.

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também