Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Instanciar Function
  2. Definir corpo, parâmetros e retorno
  3. Propridedas da classe Function
  4. Métodos da classe Function
  5. construtor vs declaração

A classe Function representa um tipo de dado que contém métodos e propriedades para manipulação de funções. Todas as funções vistas e criadas até aqui são objetos do tipo Function. Nesta parte do tutorial, vamos estudar as propriedades e métodos da classe Function.

A instanciar um objeto do tipo Function, utilizamos seu construtor padrão como mostrado na sintaxe logo abaixo:

Sintaxe
let nome_objeto = new Function();
Function();
Exemplo 1
let funct = new Function();
console.log(funct);
Saída
[Function: anonymous]

Como pode ser observado na saída acima, quando usamos o construtor, uma function anônima é criada por padrão.

O construtor visto acima, aceita como argumentos os parâmetros e o corpo da uma função no formato string como pode ser visto na sintaxe abaixo.

Sintaxe
let nome_objeto = new Function(<functionBody>);

let nome_objeto = new Function(param0, ..., paramN, <functionBody>)
Onde
param0..N: string contendo parâmetro utilizado pela função
<functionBody>: string contendo corpo da função. Parâmentros de funções delimitados por '
Exemplo 2
let funcao1 = new Function("console.log('funcao1')");
let funcao2 = new Function('par1','par2','console.log(par1,par2)');
funcao1();
funcao2(1,2);
Saída
funcao1
1 2

A adição de retorno em uma Function utilizando o construtor acima deve ser feita na string que contém a declaração do corpo da função, como no mostrado no exemplo abaixo:

Exemplo 3
let funcao = new Function("p1","p2",'return p1 + p2;');
console.log(funcao(2,2));
Saída
4

O tipo Function fornece as propriedades abaixo que manipulação de seus dados:

Tab. 1: Propriedades
Propriedade Descrição
length Retorna número de parâmetros -
name Retorna nome da função -
prototype Retorna construtor -
Exemplo 4
let a = function funcao_teste(arg1,arg2,arg3) {
};

console.log(a.length);
console.log(a.name);
console.log(a.prototype);
Saída
3
funcao_teste
{}

Para recuperarmos a lista de argumentos passados para uma função, utilizamos argument que retorna essa lista no formato array.

Exemplo 4.1: arguments
function funcao(p1, p2)
{
    console.log(arguments);
    console.log("length:",arguments.length);
    
    for( let vl in arguments)
        console.log(vl);
}

funcao(1,2,3)
Saída
[Arguments] { '0': 1, '1': 2, '2': 3 }
length: 3
0
1
2

A classe Functrion alguns vários métodos que nos auxiliam na manipulação desse tipo de dados. Abaixo a lista completa.

Tab. 2: Métodos
Método Descrição
apply Invoca uma Function Visitar
bind Atribui uma Function a um objeto Visitar
call Invoca uma Function Visitar
toString Retorna corpo de uma Function Visitar

Com o método apply, podemos invocar uma função atribuindo um array ou objeto com valores que são interpretados como argumentos da função.

Sintaxe
nome_funcao.apply(thisArg);

nome_funcao.apply(thisArg, argsArray);
Onde
thisArg: this
argsArray: array com valores como argumentos para uma função.
Retorno
Retorno da função invocado se houver
Exemplo 5
let a = function funcao_teste(...arg) {
  for( let x in arg)
    console.log(x);
};
let n = [1,2,3];
funcao = a.apply(null,n);
Saída
0
1
2

O método apply é semelhante ao método call. A diferença é que o método apply utiliza os argumentos em forma de array.

Utilizando o método bind, podemos atribuir uma função a um objeto de forma a inserir a função em um contexto/escopo de objeto.

Sintaxe
nome_funcao.bind(thisArg);

nome_funcao.bind(thisArg, arg1);

nome_funcao.bind(thisArg, arg1, arg2, argN);
Onde
thisArg: this
args1...argN: lista de argumentos.
Retorno
Uma nova função associada ao objet
Exemplo 6
const objeto = {
  atributo:-1,
  metodo : function(){
    console.log(this.atributo);
  }
}

objeto.metodo(); //método invocado a partir do objeto
let funcao = objeto.metodo; //recuperar funcao
funcao(); //invocada fora do objeto: sem acesso a atributo
funcao = funcao.bind(objeto); //adicionado contexto a função
funcao(); //funcao invocado dentro de um escopo
Saída
-1
undefined
-1

Diferentes funções podem ser atribuídas a um ou mais objetos utilizando o método bind. A mesma função foi utilizada acima para melhor clareza no uso desse método.

O método call é utilizado para invocar uma função. Esse método recebe como argumentos um lista de argumentos para a função invocada.

Sintaxe
nome_funcao.call(thisArg, arg1, argN)
Onde
thisArg: this
argsArray: array com valores como argumentos para uma função.
Retorno
Retorno da função invocado se houver.
Exemplo 7
let a = function funcao_teste(arg1,arg2,arg3) {
  console.log(arg1);
};
a.call(this,"teste");
Saída
teste

Com o método toString podemos recuperar o corpo de um função em formato string. Esse método não recebe argumentos.

Sintaxe
nome_funcao.toString();
Onde
-
Retorno
String contendo o corpo da função
Exemplo 8
let a = function funcao_teste(arg1,arg2,arg3) {
  console.log(arg1);
};
console.log(a.toString());
Saída
function funcao_teste(arg1,arg2,arg3) {

  console.log(arg1);

}
  1. 20/08/2025 - revisão 3 - ajustes: pontuais e sintaxes; Adição: 'arguments'
  2. 25/09/2024 - revisão 2 - ajustes pontuais
  3. 06/10/2023 - revisão 1 - Correção navegação, layout e erros gramaticais
  4. 31/05/2023 - versão inicial