Usando objeto como parâmetro no JavaScript

Trabalhar com parâmetros fixos em uma função pode deixar seu código engessado, pois quando você precisar alterar os parâmetros, você precisará alterar todo o código que faz referência a função em questão. Para quem está acostumado a trabalhar com o jQuery, ou outras bibliotecas semelhantes, está acostumado a fazer chamadas de funções utilizando objetos como parâmetros, definindo valores e funções conforme a necessidade. Neste artigo irei explicar como construir sua própria função utilizando objeto como parâmetro.

Princípio Básico

Vamos direto ao ponto com um código de exemplo:

1
2
3
4
5
6
7
8
9
10
     function myFunction(options) {
         options = (typeof options !== "object") ? {} : options;
         options.param1 = options.param1 || '-';
         options.param2 = options.param2 || '-';
         console.log(options.param1 +" | "+ options.param2);
     }
     myFunction();
     myFunction({ param1: 'a'});
     myFunction({ param2: 'b'});
     myFunction({ param1: 'a', param2: 'b'});

O resultado para o código acima, na console, é:

- | -
a | -
- | b
a | b

Na primeira chamada à função myFunction() (linha 7) foi definido nenhum parâmetro, para esse caso foi necessário o tratamento do parâmetro para criar o objeto quando ele for nulo. Esse tratamento foi adicionado na primeira linha da função (linha 2), que iniciamos o parâmetro como um objeto vazio caso ele seja nulo.

Na segunda e terceira chamada  (linha 8 e 9)  foi definido somente um dos parâmetros, para esse caso foi necessário o tratamento do parâmetro não definido, que foi feito na linha 3 e 4, que foi definido o valor ‘-‘ para o parâmetro não definido.

Na quarta chamada (linha 10) foi definido todos os parâmetros, que é o convencional.

Na linha 5 apenas imprime o resultado de cada parâmetro (já tratado) na console, separado pela string ” | “.

Objeto Complexo

Como o parâmetro é um objeto, você pode definir outros objetos, arrays e funções dentro do parâmetro, como é feito no jQuery:
1
2
3
4
5
6
7
8
    $.ajax({
        url: "script.php",
        data: { id: 1, nome: 'Nardini' },
        cache: true,
        beforeSend: function() {
            showLoading();
        }
    });

No exemplo acima, é passado como parâmetro uma string, um objeto literal, um boolean e uma função. O céu é o limite.  :wink:

Cuidado com o excesso

Com grandes poderes vêm grandes responsabilidades. Cuidado para não entregar muita responsabilidade para sua função, o fato de poder receber muitos parâmetros, não quer dizer que você deva sair criando vários. Quanto mais parâmetros, mais fica difícil manter o código, além de poder perder performance para tratar cada particularidade.

Outro problema do excesso é deixar a chamada da função confusa. Você não pode olhar a assinatura da função e ter dúvida sobre o seu funcionamento. Para disso, deixe um comentário sobre cada parâmetro, defina nomes intuitivos, delegue responsabilidades para outros objetos, enfim, siga as boas práticas.

Mantenha sua função somente com o necessário, vá criando as variações conforme a necessidade do código.

 

Conclusão

Como demonstrado, o parâmetro como objeto lhe dá muito mais flexibilidade para tratar as funcionalidades da função. Porém, não deixe isso virar um ponto negativo, mantenha seu código sempre enxuto e bem estruturado.

5 comentários em “Usando objeto como parâmetro no JavaScript


  1. Vinicius disse:

    Parabéns!! Usando objeto como parâmetro no JavaScript apoiado!

    • Marcus disse:

      Descordo… nao gostei

      • Pablo disse:

        Não concordo com vc Marcus, mas concordo com Vinicius e com o Nardini!

  2. Pablo e Vinicius, eu estou com vocês. Mantenha sua função somente com o necessário, vá criando as variações conforme a necessidade do código.

  3. Pingback:Objeto como parâmetro numa função javascript | DL-UAT

Deixe um comentário