Get to know MDN better
Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
O método call() invoca uma função com um dado valor this e argumentos passados individualmente.
Nota: Apesar de a sintaxe desta função ser quase idêntica à de apply(), a principal diferença é que call() aceita uma lista de argumentos, enquanto apply() aceita um único array de argumentos.
O valor de this proveu a chamada para fun. Note que this pode não ser o valor atual visto pelo método: se esse método é uma função em non-strict mode code, null e undefined serão reescritos com o objeto global, e valores primitivos serão encaixados.
arg1, arg2, ...Argumentos para o objeto.
Você pode atribuir um objeto this diferente quando executar uma função existente. this refere-se ao objeto atual, o objeto em execução. Com call, você pode escrever um método uma vez e então herdá-lo em outro objeto, sem ter que reescrever o método para o novo objeto.
Você pode usar call para encadear construtores para um objeto, similar ao Java. No seguinte exemplo, o construtor do objeto Product é definido com dois parâmetros, name e price. Outras duas funções Food e Toy executam Product passando this, name e price. O Produto inicializa as propriedades name e price, ambos definem o category.
Neste exemplo, criamos uma função anônima que usa o call para executá-lo em todos os objetos em um array(vetor). O principal propósito da função anônima aqui é adicionar uma função print para todo o objeto, que está disponível para imprimir o índice correto do objeto no array. Não foi necessário passar o valor do objeto como this , mas isso foi feito apenas para explicação.
No exemplo abaixo, quando vamos chamar a apresentação, o valor de this será associado ao objeto i.
function apresentacao() { var resposta = [this.pessoa, 'é um excelente', this.funcao].join(' '); console.log(resposta); } var i = { pessoa: 'Douglas Crockford', funcao: 'Desenvolvedor Javascript' }; apresentacao.call(i); // Douglas Crockford é um excelente Desenvolvedor Javascript| ECMAScript® 2027 Language Specification # sec-function.prototype.call |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 27 de abr. de 2025 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.