Atualizado: 07/12/2024

Verificando a Existência e Iteração de Métodos e Propriedades - JavaScript

Em JavaScript, antes de usar novas propriedades ou métodos definidos dinamicamente em um objeto, é essencial verificar se eles já existem. O operador in é frequentemente utilizado para isso. Sua sintaxe é simples:

"propriedade|metodo" in objeto

Aqui, o nome da propriedade ou método é colocado entre aspas e após o in vem o nome do objeto. Se o objeto possui uma propriedade ou método com esse nome, o operador retorna true; caso contrário, retorna false.

Por exemplo, para verificar a existência de algumas propriedades no objeto:

const user = {};
user.name = "Tom";
user.age = 26;
user.print = function() {
    console.log(this.name);
    console.log(this.age);
};

const hasNameProp = "name" in user;
console.log(hasNameProp); // true - a propriedade 'name' existe em 'user'

const hasWeightProp = "weight" in user;
console.log(hasWeightProp); // false - 'user' não possui propriedade ou método chamado 'weight'

Da mesma forma, podemos verificar a existência de métodos:

const hasPrintMethod = "print" in user;
console.log(hasPrintMethod); // true - 'user' possui o método 'print'

Um método alternativo consiste em verificar o valor undefined. Se a propriedade ou método for igual a undefined, então não está definido:

const hasNameProp = user.name !== undefined;
console.log(hasNameProp); // true
const hasWeightProp = user.weight !== undefined;
console.log(hasWeightProp); // false

Como os objetos são do tipo Object, eles podem usar o método hasOwnProperty(), que verifica se a propriedade especificada é uma propriedade direta do objeto:

const hasNameProp = user.hasOwnProperty("name");
console.log(hasNameProp); // true
const hasPrintMethod = user.hasOwnProperty("print");
console.log(hasPrintMethod); // true
const hasWeightProp = user.hasOwnProperty("weight");
console.log(hasWeightProp); // false

Iteração sobre Propriedades e Métodos

Com um loop for, podemos iterar sobre um objeto como se fosse um array, acessando todas as suas propriedades e métodos e seus valores:

const tom = {
  name: "Tom",
  age: 26,
  print() {
      console.log(`Name: ${this.name} Age: ${this.age}`);
  }
};

for(const prop in tom) {
  console.log(prop, " : ", tom[prop]);
}

Saída no navegador:

name : Tom
age : 26
print : ƒ () {
    console.log(`Name: ${this.name} Age: ${this.age}`);
}

As Funções Object.entries, Object.keys, Object.values

As funções adicionais Object.entries, Object.keys e Object.values permitem acessar todas as propriedades (incluindo métodos) de um objeto e seus valores.

Object.entries()

A função Object.entries() recebe um objeto como parâmetro e retorna um array de pares "nome da propriedade - valor":

const tom = {
  name: "Tom",
  age: 26,
  print() {
      console.log(`Name: ${this.name} Age: ${this.age}`);
  }
};

for(const prop of Object.entries(tom)) {
  console.log(prop);
}

Saída no navegador:

["name", "Tom"]
["age", 26]
["print", ƒ]

Object.keys()

A função Object.keys() retorna um array com os nomes de todas as propriedades de um objeto:

const tom = {
  name: "Tom",
  age: 26,
  print() {
      console.log(`Name: ${this.name} Age: ${this.age}`);
  }
};

console.log(Object.keys(tom)); // ["name", "age", "print"]

for(const prop of Object.keys(tom)) {
  console.log(prop, " : ", tom[prop]);
}

Consequentemente, é possível iterar sobre este conjunto e obter os valores das propriedades:

name : Tom
age : 26
print : ƒ () {
    console.log(`Name: ${this.name} Age: ${this.age}`);

Object.values()

A função Object.values() retorna um array que contém todos os valores das propriedades de um objeto:

const tom = {
  name: "Tom",
  age: 26,
  print() {
      console.log(`Name: ${this.name} Age: ${this.age}`);
  }
};

console.log(Object.values(tom)); // ["Tom", 26, function print()]

Essas funções fornecem métodos úteis para manipular e interagir com objetos em JavaScript.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com