terça-feira, 30 de agosto de 2016

Verifique se a propriedade pertence àquele objeto

Além do nosso amigo do exemplo anterior, no JavaScript temos o loop for-in que usamos pra iterar em objetos. Uma coisa bacana de se fazer e que pode evitar que algo que você não queira aconteça, é usar o método hasOwnProperty(). Esse método simplesmente vai filtrar apenas as propriedades do objeto em si, excluindo as propriedades herdadas pelo prototype.
Um exemplo rápido:
  1. var burger = {
  2. queijo: 'cheddar',
  3. pao: 'integral',
  4. hamburguer: 'picanha',
  5. molho: 'barbecue'
  6. };
Aí em uma parte obscura, aparece algo que adiciona uma propriedade a todos os objetos.
  1. if(!Object.prototype.feijao) {
  2. Object.prototype.feijao = 'preto';
  3. }
O que aconteceu acima foi que verificamos se existe a propriedade feijao em Object e, caso ela não exista definimos ela com o valor preto. Aí que está o negócio da coisa do JavaScript, nosso objeto burger, já herda a propriedade feijao via prototype.
Com isso, para evitarmos que feijao apareça quando listarmos as propriedades de burger (até porque feijão, na minha opinião, não combina muito com hamburguer), fazemos o seguinte:
  1. for(var i in burger) {
  2. if(burger.hasOwnProperty(i)) {
  3. console.log(i + ' => ' + burger[i]);
  4. }
  5. }
  6.  
  7. // Resultará no seguinte:
  8. // queijo => cheddar
  9. // pao => integral
  10. // hamburguer => picanha
  11. // molho => barbecue
Do contrário, caso não fizéssemos essa verificação, teríamos algo assim:
  1. for(var i in burger) {
  2. console.log(i + ' => ' + burger[i]);
  3. }
  4.  
  5. // Resultará no seguinte:
  6. // queijo => cheddar
  7. // pao => integral
  8. // hamburguer => picanha
  9. // molho => barbecue
  10. // feijao => preto

Era isso! Dicas rápidas sobre a linguagem, que para alguns podem ser básicas, mas que muita gente ainda pode não conhecer e, que podem evitar alguns problemas no futuro.

Nenhum comentário:

Postar um comentário