De forma simples, descriptor ou "descritor", é um tipo de dado que possui atributos
que armazenam informações sobre um atributo. Abaixo, pode ser conferida uma tabela
com os atributos de um descriptor:
Sintaxe
let objeto = {
value: valor ,
writable: true | false,
enumerable: true | false,
configurable: true | false
}
Abaixo, pode ser conferida uma tabela com os atributos de um descriptor bem como suas
decrições sucintas:
Tab. 1: Atributos Descriptor
Atributo |
Descrição |
value |
Armazena o valor do atributo/método. |
writable |
Armazena um booleano que define se pode ser alterada ou não |
enumerable |
Armazena um booleano que define se é enumerável ou não |
configurable |
Armazena um booleano que define se é configurável ou não |
Um exemplo de uso de descriptor bem como seus atributos pode ser visto abaixo. Nesse
exemplo, o método defineProperty da classe Object será utilizado.
Sintaxe
Object.defineProperty( obj, "atrib1", descriptor );
Exemplo 4
//nosso objeto
let obj = {
}
//descritor
let descriptor = {
value: true,
writable:true,
enumerable:true,
configurable:true
}
//novo atributo
Object.defineProperty(obj,"atrib1",descriptor);
console.log(obj.atrib1);
//com writable false, prop1 não pode ser alterada
Object.defineProperty(obj,"atrib1",{writable:false});
//forçando alteração de valor
obj.prop1 = false;
//mas continua true
console.log(obj.prop1);
Saída
prop1 : true
true
true
A classe Object, bem como seus atributos e métodos, podem ser vistos em
Classes Nativas: Object com mais detalhes.