de ES2015, temos a posibilidade de usar Getters e Setters para definir propiedades nos nosos obxectos. Nesta publicación entenderemos como funcionan.
Este contido publicouno primeiro no meu boletín informativo, a semana despois de publicar o boletín público no meu blog, se Quere ser o primeiro en ler subscribirse
antes de ler Esta publicación recomendo a lectura:
- Comprender isto en javascript
- Comprender os tipos en JavaScript
- Comprender os obxectos en JavaScript
listo?
Neste momento debes coñecer o comportamento e os atributos do Propiedades dos obxectos en JavaScript.
Neste punto debe aclararse que os obxectos teñen tres tipos de propiedades:
- Propiedades de datos: propiedades normais, que conteñen datos.
- Propiedades de accesorios: propiedades que cambian o comportamento estándar de
]
e]
- _Internais propiedades: _ Propiedades de lingua interna, como
]
,]
ou]
entre outros.Cales son os getters e os axustes
Unha función que obtén un valor dunha propiedade chámase Getter e un que establece o valor dun Propiedade chámase Setter.
Esta característica foi implementada en ES2015 e pode modificar o funcionamento normal de establecer ou obter o valor dunha propiedade, é coñecida como propiedades de accesorios.
Operación
Ás veces queremos valores en función doutros valores, por iso os accesorios de datos son moi útiles.
Para crealos usamos as palabras clave Obtén e configure
const obj = { get prop() { return this.__prop__; }, set prop(value) { this.__prop__ = value * 2; },};obj.prop = 12;console.log(obj.prop); //24
Creamos un obxecto, cunha única propiedade, que ten un getter e un setter. Deste xeito, cada vez que fixamos un valor para a propósito, multiplicarase por dous.
Nota: Use Prop por convención, pero non implica que é un valor especial, este é un valor normal.
Outra forma de crear unha propiedade de accesorios está a usar explícitamente o obxecto.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 vantaxe que temos en Deste xeito, é que podemos configurar os atributos que queremos ter a propiedade.
Características
Un accesorio de propiedade, só ten os atributos configurables e _onumerables, _IF vemos os seus atributos que nós verá isto.
Isto lévanos ao valor que non se pode substituír se o Setter da función non se usa ( Recoméndase definir tanto Setter como Getter).
Se o modo rigoroso non se usa e os intentos de modificar o valor será un erro silencioso.
Outra característica importante é que, se está definido Propiedade no mesmo nome nun alcance superior da cadea de prototipo, o accesorio de propiedade, será a propiedade que predomina.
Vexamos un último exemplo