Getter é um método para obter o valor de um atributo, e o setter é um método de definir o valor de um atributo. Os métodos getter e setter podem ser definidos para qualquer objeto principal predefinido ou objeto definido pelo usuário, adicionando novas propriedades a objetos existentes.
Existem duas maneiras de definir um método getter ou setter:
1. Defina quando a inicialização do objeto
2. Depois que o objeto é definido, a definição é adicionada através dos métodos __definegetter__ e __defineSetter do objeto.
A única coisa a fazer ao definir métodos Getter e Setter usando o processo de inicialização do objeto é prefixar "Get" no método getter e "set" no método Setter.
Outra coisa a observar é que o método getter não possui parâmetros, e o método do setter deve ter um parâmetro, ou seja, o novo valor do atributo a ser definido.
Por exemplo:
A cópia do código é a seguinte:
O = {
Valor: 9,
obtenha b () {return this.value;},
set setter (x) {this.value = x;}
}
Depois que o objeto for definido, adicione um método getter ou setter ao objeto, dois métodos especiais __definegetter__ e __defineSetter__ são usados. Essas duas funções exigem que o primeiro seja o nome de um getter ou setter, fornecido na string, e o segundo parâmetro é uma função como um getter ou setter.
Por exemplo, adicionamos um atributo de um ano ao objeto Data:
A cópia do código é a seguinte:
Date.prototype .__ Definegetter __ ('ano', function () {return this.getlyear ();});
Date.Prototype .__ defineSetter __ ('ano', função (y) {this.Setlyear (y)});
var agora = nova data;
alerta (agora.year);
agora.Year = 2006;
alerta (agora);
Quanto à qual a forma adota principalmente do estilo de programação do indivíduo, o primeiro formulário é compacto e mais fácil de entender. Mas se você deseja adicionar getter ou setter depois que o objeto for definido, ou o protótipo desse objeto não é escrito por você ou está embutido, você deve usar o segundo método.
Aqui está uma implementação que adiciona o atributo InnerText ao navegador Mozilla:
A cópia do código é a seguinte:
Htmlelement.prototype .__ definegetter__
(
"InnerText", function ()
// define um método getter para obter o valor do interior,
// para que você possa ler agora!
{
var texTrange = this.ownerdocument.createrange ();
// usando o intervalo para recuperar o conteúdo do objeto
texTrange.SelectNodEcontents (isto);
// só obtém o conteúdo do nó do objeto
return textrange.toString ();
// Dê ao InnerText o valor do conteúdo do nó
}