da ES2015, temos a possibilidade de usar getters e setters para definir propriedades em nossos objetos. Neste post, vamos entender como eles funcionam.
Este conteúdo publicou primeiro na minha newsletter, na semana depois de publicar o boletim público no meu blog, se Você quer ser o primeiro a ler se inscrever
antes de ler Este post eu recomendo ler:
- entendendo isso em javascript
- entender os tipos em javascript
- Entendendo os objetos em JavaScript
Ready?
Neste momento você deve saber o comportamento e os atributos do Propriedades dos objetos em JavaScript.
Neste ponto, ele deve ser esclarecido que os objetos têm três tipos de propriedades:
- Propriedades de dados: Propriedades normais, que contêm dados.
- propriedades do Accessor: Propriedades que alteram o comportamento padrão de
]
e]
- _Internal Propriedades: _ propriedades de linguagem interna, como
]
,]
ou]
entre outros.
Quais são os getters e setters
uma função que obtém um valor de uma propriedade é chamado Getter e um que define o valor de um Propriedade É chamado de setter.
Este recurso foi implementado no ES2015, e pode modificar a operação normal de estabelecer ou obter o valor de uma propriedade, é conhecida como propriedades do Accessor.
Operação
Às vezes queremos valores com base em outros valores, para que os acessadores de dados sejam bastante úteis.
Para criá-los, usamos as palavras-chave Get e definir
const obj = { get prop() { return this.__prop__; }, set prop(value) { this.__prop__ = value * 2; },};obj.prop = 12;console.log(obj.prop); //24
Criamos um objeto, com uma única propriedade, que tem um getter e um setter. Desta forma toda vez que definimos um valor para o suporte, ele multiplicará por dois.
Nota: Use o suporte por convenção, mas não implica que seja um valor especial, este é um valor normal.
Outra maneira de criar uma propriedades de acesso é explicitamente usando objeto.defineproperty
const obj = {};Object.defineProperty(obj, //objeto target 'prop', //nombre propiedad { enumerable: true, configurable: true, get prop() { //getter return this.__prop__; }, set prop(value) { //setter this.__prop__ = value * 2; }, });obj.prop = 12;var atr = Object.getOwnPropertyDescriptor(obj, 'prop')console.log(atr);
a vantagem que temos em Desta forma, é que podemos definir os atributos que queremos ter a propriedade.
Recursos
A propriedade Property Accessor, só tem os atributos configuráveis e _onumerable, _Im vemos seus atributos nós vai ver isso.
Isso nos leva ao valor não pode ser sobrescrito se o setter da função não for usado ( Recomenda-se definir tanto setter e getter).
Se o modo rigoroso não for usado e tentar modificar o valor será um erro silencioso.
Outro recurso importante, é que, se for definido u NA Propriedade com o mesmo nome em um escopo superior da cadeia protótipo, o acessador de propriedade, será a propriedade que predomina.
Vamos ver um último exemplo