JS-0408 - JavaScript Completo ES6 - Functions

O construtor de funções
Functioné o construtor criador de todas funções em JS, permitindo a estas, a herança de suas propriedades e métodos. Desta forma, a declaração de uma função pode ser escrita também através de um objeto Function. Ex:
Logicamente declarar uma função é mais simples do que criar um objeto (embora esteja sendo criado de qualquer jeito), mas a escrita fica mais simples apenas declarando uma função.
Algumas das propriedades e dos métodos do construtor Function que podemos utilizar nas funções são as seguintes:
- length: retorna o total de argumentos de uma função, assim, areaQuadrado.lenght retorna 1;
- name: retorna uma string com o nome da função, ainda no exemplo acima, areaQuadrado.name retorna "areaQuadrado";
- call(): seguindo o formato function.call(this, arg1, arg2, ...) este método executa a função, contudo, permite a substituição da referência this, desde que seja algo parecido estruturalmentecom a referência (um objeto do mesmo tipo ou propriedades e métodos que não entrarão em conflito no escopo da função). No exemplo a seguir, será criado um objeto programador e uma função será declarada referenciando this, no entanto, this se refere neste escopo ao objeto máximo Window, que não possui as propriedades nome e linguagem. Desta forma, o método call permite a substituição da referência:
Um novo objeto pode ser passado como parâmetro de call, e os demais parâmetros requeridos pela função, caso existam, deverão ser incluídos após o objeto. Ex:
O call é normalmente utilizado nas funções do protótipo construtor Array, permitindo a extensão de todos os métodos de Array a objetos Array e array-like.
- apply(): no formato apply(this, [arg1, arg2, ...]), funciona como o call, a passagem de argumentos, que são passados através de um array, permitindo a manipulação da referência e passagem de argumento de forma dinâmica em casos em que o parâmetro seja uma lista, o que não pode ser aplicado ao call. Ex:
- bind():diferentemente de call e apply, o bind, no formato bind(this, arg1, arg2, ...), não executa a função, mas retorna a mesma com um novo contexto de this, permitindo o controle da ativação e reutilização da mesma. Utilizando o projeto prático, no link https://www.rodrigobrito.dev.br/projetos/javascript, exemplo:
O bind não necessita que todos os parâmetros sejam passados em si, permitindo que os argumentos necessários, ou parte deles, sejam passados no momento da execução da função. Ex:
Desta forma, é possível definir parâmetros comuns como padrão e a inserção dos demais parâmetros seria flexibilizada.