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
true
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
undefined
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()
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
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
Object.values
Object.entries()
A função Object.entries()
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()
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()
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.