Objetivos
        
    
    
    
        
Object
    
    
        
            
                Object é a classe base que todos os objetos em JavaScript herdam. Nesta parte 
                do tutorial vamos aprender a instanciar um objeto e também suas propriedades e métodos 
                para manipular seus dados.
            
         
     
    
        
Declaração
    
    
        
            
                Para instanciar um objeto do tipo Object utilizamos seu construtores padrão, podendo 
                ou não um ter um valor como argumento.
            
            Sintaxe
            
let nome_variavel = new Object( value );
let nome_variavel = new Object()
            Onde
            value: valor passado como argumentos. O novo objeto criado é baseado no value passado. 
Se null ou undefined, um objeto vazio será criado.
            Exemplo 1
            
let obj = new Object(100);
let obj = Object(true);
            Saída
            
-
         
     
    
    
        
            
                A classe Object possui algumas propriedades que retornam informaçõe sobre seu tipo 
                de dados. Abaixo a lista de propriedades:
            
            
                
                    
                        | Propriedade | 
                        Descrição | 
                         | 
                    
                
                
                    
                        | constructor | 
                        Retorna a função construtora | 
                        Visitar | 
                    
                
            
         
     
    
        
constructor
    
    
        
            
                A propriedade constructor retorna a função que é utilizada para a 
                instanciação do tipo de dado Object.
            
            Sintaxe
            
nome_objeto.constructor;
            Exemplo 1
            
let funcao = Number().constructor;
let num = funcao(100);
console.log(typeof(num));
            Saída
            
number
         
     
    
    
        
            
                Os métodos listados abaixo são fornecidos pelo classe Object para manipulação de suas 
                informações.
            
            
                
                    
                        | Método | 
                        Descrição | 
                         | 
                    
                
                
                    
                        | assign | 
                        Atribui valores/propriedaddes a um objeto | 
                        Visitar | 
                    
                    
                        | create | 
                        Cria instância de um objeto | 
                        Visitar | 
                    
                    
                        | defineProperties | 
                        Adiciona propriedades a um objeto | 
                        Visitar | 
                    
                    
                        | defineProperty | 
                        Adiciona propriedade a um objeto | 
                        Visitar | 
                    
                    
                        | entries | 
                        Retorna iterador | 
                        Visitar | 
                    
                    
                        | freeze | 
                        Torna propriedades somente-leitura | 
                        Visitar | 
                    
                    
                        | fromEntries | 
                        Converte iterador chave/valor em objeto  | 
                        Visitar | 
                    
                    
                        | getOwnPropertyDescriptor | 
                        Retorna configuraçõe de propriedade de um objeto | 
                        Visitar | 
                    
                    
                        | getOwnPropertyDescriptors | 
                        Retorna configuraçõe de todas propriedades de um objeto | 
                        Visitar | 
                    
                    
                        | getOwnPropertyNames | 
                        Retorna array contendo nomes de chaves | 
                        Visitar | 
                    
                    
                        getOwnPropertySimbols | 
                        - | 
                        - | 
                    
                    
                        | getPrototypeOf | 
                        Recupera propriedade prototype. | 
                        Visitar | 
                    
                    
                        groupBy | 
                        - | 
                        - | 
                    
                    
                        hasOwn | 
                        - | 
                        - | 
                    
                    
                        hasOwnProperty | 
                        - | 
                        - | 
                    
                    
                        | is | 
                        Compara dos valores ou objetos | 
                        Visitar | 
                    
                    
                        | isExtensible | 
                        Verifica se objeto é extensível. | 
                        Visitar | 
                    
                    
                        | isFrozen | 
                        Verifica se objeto é somente-leitura | 
                        Visitar | 
                    
                    
                        isPrototypeOf | 
                        - | 
                        - | 
                    
                    
                        | isSealed | 
                        Verificar se objeto está selado para alterações | 
                        Visitar | 
                    
                    
                        | keys | 
                        Retorna array contendo chaves, no formato string, de um objeto | 
                        Visitar | 
                    
                    
                        | preventExtensions | 
                        Define um objeto para ser extensível. | 
                        Visitar | 
                    
                    
                        propertyIsEnumerable | 
                        - | 
                        - | 
                    
                    
                        | seal | 
                        Define um objeto como selado | 
                        Visitar | 
                    
                    
                        | setPropertyOf | 
                        Define a propriedade property. | 
                        Visitar | 
                    
                    
                        toLocaleString | 
                        - | 
                        - | 
                    
                    
                        toString | 
                        - | 
                        - | 
                    
                    
                        valueOf | 
                        - | 
                        - | 
                    
                    
                        | values | 
                        Retorna um array com os valores de um objeto. | 
                        Visitar | 
                    
                
            
         
     
    
    
        
            
                Com o método assign podemos atribuir valores/propriedades a um objeto. Esse método recebe os 
                objetos como argumento para atribuição e não possui retorno.
            
            Sintaxe
            
nome_objeto.assign(target,...source);
            Onde
            target: objeto em será atribuído
source: objeto contendo valores para atribuir
            Exemplo 2
            
let objeto1 = {
  valor1 : 100
};
let objeto2 = {
 valor2 : 200
};
let retorno = Object.assign(objeto1,objeto2);
console.log(objeto1.valor1);
console.log(objeto1.valor2);
            Saída
            
100
200
         
     
    
    
        
            
                O método estático create é utilizado para criar novas instâncias de objetos 
                dinamicamente.
            
            Sintaxe
            
nome_objeto.create();
            Onde
            -
            Retorno
            Novo Object
            Exemplo 3
            
let objeto1 = {
  valor1 : 100,
  valor2 : "string"
};
let obj = Object.create(objeto1);
console.log(obj.valor1);
            Saída
            
100
         
     
    
    
        
            
                O método defineProperties nos permite adicionar mais de uma nova propriedade a um objeto. 
                Esse método não possui retorno e recebe como argumentos as informações de uma nova propriedade.
            
            Sintaxe
            
Object.defineProperties( obj, {prop1, prop2, propN});
            Onde
            obj: objeto no qual desejamos adicionar um propriedade
prop: nome da propriedade
descriptor: Objeto contendo valor e outras flags.
            Exemplo 4
            
function meuObjeto(){
};
Object.defineProperty(meuObjeto, 'novaPropriedade', {
  value: 900,
});
let obj = new  meuObjeto();
obj.novaPropriedade = 900;
console.log(obj.novaPropriedade);
            Saída
            
900
         
     
    
    
        
            
                Com o método entries podemos recuperar um vetor contendo as propriedades e valores 
                contidos em um objeto. O array retornado contém seus elementos no formato 
                chave-valor.
            
            Sintaxe
            
Object.entries(obj)
            Onde
            obj: objeto que desejamos recuperar os dados
            Retorno
            Um array contendo chave-valor dos atributo/valor de um obj.
            Exemplo 5
            
meuObjeto = {
  atributo1:'teste',
  atributo2: 999
};
let it = Object.entries(meuObjeto);
for ( let [ch,vl] of it)
  console.log(ch,vl);
            Saída
            
atributo1 teste
atributo2 999
         
     
    
    
        
            
                O método freeze é utilizado para tornar as propriedades de um objeto 
                não configuráveis e somente-leitura.
            
            Sintaxe
            
Object.freeze( obj )
            Onde
            obj: objeto que desejamos tornar somente-leitura.
            Retorno
            Retorna obj
            Exemplo 6
            
meuObjeto = {
  atributo1: -1
};
let it = Object.freeze(meuObjeto);
meuObjeto.atributo1 = 999;
console.log(meuObjeto.atributo1);
            Saída
            
-1
         
     
    
    
        
            
                Com o método fromEntries, podemos converter um tipo de dado iterável, 
                que contém chave e valor, em um objeto. As chaves e valores são transformados em
                propriedades.
            
            Sintaxe
            
Object.fromEntries(iterable)
            Onde
            iterable: iterável, como Map, contendo lista de elementos contendo chave/valor.
            Retorno
             Objeto contendo chaves/valores de iteravel como propriedades.
            Exemplo 7
            
meuObjeto = new Map([
    ['atrib1', 'teste'],
    ['atrib2', 999]
]);
let it = Object.fromEntries(meuObjeto);
console.log(meuObjeto);
            Saída
            
Map { 'atrib1' => 'teste', 'atrib2' => 999 }
         
     
    
    
        
            
                Com o método getOwnPropertyDescriptor podemos recuperar as configurações de 
                uma propriedade específica que é passada como argumento.
            
            Sintaxe
            
Object.getOwnPropertyDescriptor(obj, prop);
            Onde
            obj: objeto que desejamos recuperar as informações da propriedade.
prop: nome da propriedade
            Retorno
            Objeto contendo chaves/valores de iteravel como propriedades.
            Exemplo 8
            
meuObjeto = {
    atrib: -1
};
descritor = Object.getOwnPropertyDescriptor(meuObjeto,"atrib");
console.log(descritor);
            Saída
            
{ value: -1, writable: true, enumerable: true, configurable: true }
         
     
    
        getOwnPropertyDescriptors
        
     
    
        
            
                Utilizando o método getOwnPropertyDescriptors, podemos recuperar as 
                configurações de todas as propriedades de um objeto que é passado como argumento.
            
            Sintaxe
            
Object.getOwnPropertyDescriptor(obj);
            Onde
             obj: objeto que desejamos recuperar as informações da propriedade.
            Retorno
            Objeto contendo as configurações de obj.
            Exemplo 9
            
meuObjeto = {
    atrib: -1,
    atrib2: -2
};
descritor = Object.getOwnPropertyDescriptors(meuObjeto);
console.log(descritor);
            Saída
            
{
  atrib: { value: -1, writable: true, enumerable: true, configurable: true },
  atrib2: { value: -2, writable: true, enumerable: true, configurable: true }
}
         
     
    
    
        
            
                O método getOwnPropertyNames é utilizado para recuperar o nome/chave de 
                todas as propriedades de um objeto em forma de um array. 
            
            Sintaxe
            
Object.getOwnPropertyNames(obj)
            Onde
            obj: objeto que desejamos recuperar os nomes das propriedades
            Retorno
            Array de string contendo os nomes das propriedades de obj.
            Exemplo 10
            
meuObjeto = {
    atrib: -1,
    atrib2: -2
};
nomes = Object.getOwnPropertyNames(meuObjeto);
console.log(nomes);
            Saída
            
[ 'atrib', 'atrib2' ]
         
     
    
    
        
            
                Com o método getPrototypeOf podemos recuperar a propriedade prototype 
                que nos permite adicionar novos métodos e propriedades.
            
            Sintaxe
            
Object.getPrototypeOf(obj);
            Onde
            obj: objeto que desejamos recuperar a prototype
            Retorno
            Objeto prototype
            Exemplo 11
            
function meuObjeto(){
    this.atrib= -1;
    this.atrib2= -2;
}
obj = Object.create(meuObjeto);
prot = Object.getPrototypeOf(meuObjeto);
prot.nome = "teste";
console.log(obj.nome);
            Saída
            
teste
         
     
    
    
        
            
                O método is é utilizado para comparação de dois valores que são passados como 
                argumento para o método. 
            
            Sintaxe
            
Object.is(value1, value2);
            Onde
            value1..2: valores para comparação
            Retorno
            true se iguais, false caso contrário
            Exemplo 12
            
console.log(Object.is(1,'A'));
console.log(Object.is(1,2));
console.log(Object.is(1,1));
            Saída
            
false
false
true
         
     
    
    
        
            
                Com o método isExtensible podemos verificar se um objeto é extensível, 
                ou seja, se pode sofrer alterações para adição de novas propriedades e métodos.
            
            Sintaxe
            
Object.isExtensible(obj)
            Onde
            obj: objeto que desejamos verificar
            Retorno
            true se é extensível, false caso contrário.
            Exemplo 13
            
meuObjeto = {
  atrib1: 1
};
console.log(Object.isExtensible(meuObjeto));
            Saída
            
true
         
     
    
    
        
            
                Utilizando o método isFrozen podemos verificar se um objeto está em estado 
                "congelado", ou seja, não suporta alteração para adição de métodos e propriedades.
            
            Sintaxe
            
Object.isFrozen(obj)
            Onde
            obj: objeto que desejamos verificar
            Retorno
            true se objeto está congelado, false caso contrário.
            Exemplo 14
            
meuObjeto = {
  atrib1: 1
};
console.log(Object.isExtensible(meuObjeto));
            Saída
            
true
         
     
    
    
        
            
                O método isSealed é utilizado para verificar se um objeto está selado, ou seja,
                não é extensível e suas propriedades não podem ser configuradas. 
            
            Sintaxe
            
Object.isSealed(obj)
            Onde
            obj: objeto que desejamos verificar
            Retorno
            true se objeto está selado, false caso contrário.
            Exemplo 15
            
meuObjeto = {
  atrib1: 1
};
console.log(Object.isSealed(meuObjeto));
            Saída
            
false
         
     
    
    
        
            
                Com o método keys podemos recuperar um array contendo as chaves de um 
                tipo de dado chave/valor em forma de string. 
            
            Sintaxe
            
Object.keys(obj)
            Onde
            obj: objeto que desejamos recuperar as chaves
            Retorno
            Array contendo as chaves de obj em forma string.
            Exemplo 16
            
meuObjeto = {
  atrib1: 1,
  atrib2: 1
};
console.log(Object.keys(meuObjeto));
            Saída
            
[ 'atrib1', 'atrib2' ]
         
     
    
    
        
            
                Utilizando o método preventExtensions podemos definir um objeto como não 
                extensível, ou seja, não podemos adicionar propriedades e métodos.
            
            Sintaxe
            
Object.preventExtensions(obj)
            Onde
            obj: objeto que desejamos configurar
            Retorno
            Retorna obj configurador para prevenir sua extensão.
            Exemplo 17
            
meuObjeto = {
  atrib1: 1,
  atrib2: 1
};
console.log(Object.isExtensible(meuObjeto));
Object.preventExtensions(meuObjeto);
console.log(Object.isExtensible(meuObjeto));
            Saída
            
false
true
         
     
    
    
        
            
                O método seal é utilizado para selar um objeto, ou seja, não será possível 
                adicionar novas propriedades ou métodos. 
            
            Sintaxe
            
Object.seal(obj)
            Onde
            obj: objeto que desejamos selar
            Retorno
            Retorna obj selado.
            Exemplo 18
            
meuObjeto = {
  atrib1: 1,
  atrib2: 1
};
Object.seal(meuObjeto);
console.log(meuObjeto);
meuObjeto.propriedade = 10;
console.log(meuObjeto);
            Saída
            
{ atrib1: 1, atrib2: 1 }
{ atrib1: 1, atrib2: 1 }
         
     
    
    
        
            
                Com o método setPrototypeOf podemos atribuir um valor à propriedade prototype 
                de um objeto em outro objeto. 
            
            Sintaxe
            
Object.setPrototypeOf(obj, prototype)
            Onde
            obj: objeto que desejamos manipular.
prototype: nova propriedade para adicionar/alterar.
            Retorno
            Retorna obj.
            Exemplo 19
            
obj = {};
meuObjeto = {
  atrib1: 1,
  atrib2: 2
};
Object.setPrototypeOf(obj,meuObjeto);
console.log(obj.atrib2);
            Saída
            
2
         
     
    
    
        
            
                Utilizando o método values podemos recuperar um array contendo os 
                valores de um tipo de dado chave/valor.
            
            Sintaxe
            
Object.values(obj)
            Onde
            obj: objeto que desejamos manipular.
            Retorno
            Array contendo os valores de obj.
            Exemplo 20
            
meuObjeto = {
  atrib1: 1,
  atrib2: "string"
};
chaves = Object.values(meuObjeto);
console.log(chaves);
            Saída
            
[ 1, 'string' ]
         
     
    
        Histórico de atualizações
        
     
    
        
            
                - 19/08/2025 - revisão 4 - Ajustes: pontuais, sintaxes e 'objetivos'
 
                - 25/09/2024 - revisão 3 - Correção em descrição de métodos em tab. de métodos; ajustes pontuais
 
                - 02/09/2024 - revisão 2 - Correção em links de objetivos
 
                - 05/10/2023 - revisão 1 - Correção em layout, navegação e erros gramaticais
 
                - 31/05/2023 - versão inicial
 
            
         
     
    
            
            
                
                    
                    Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
                em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.