aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/javascript/reference/global_objects/function/call
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/pt-br/web/javascript/reference/global_objects/function/call
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/pt-br/web/javascript/reference/global_objects/function/call')
-rw-r--r--files/pt-br/web/javascript/reference/global_objects/function/call/index.html194
1 files changed, 194 insertions, 0 deletions
diff --git a/files/pt-br/web/javascript/reference/global_objects/function/call/index.html b/files/pt-br/web/javascript/reference/global_objects/function/call/index.html
new file mode 100644
index 0000000000..a0356bf585
--- /dev/null
+++ b/files/pt-br/web/javascript/reference/global_objects/function/call/index.html
@@ -0,0 +1,194 @@
+---
+title: Function.prototype.call()
+slug: Web/JavaScript/Reference/Global_Objects/Function/call
+tags:
+ - Função
+ - JavaScript
+ - Método(2)
+translation_of: Web/JavaScript/Reference/Global_Objects/Function/call
+---
+<div>{{JSRef("Global_Objects", "Function")}}</div>
+
+<h2 id="Introdução">Introdução</h2>
+
+<p>O método <code><strong>call()</strong></code> invoca uma função com um dado valor <code>this</code>  e argumentos passados individualmente.</p>
+
+<div class="note">
+<p><strong>Nota:</strong> Apesar de a sintaxe desta função ser quase idêntica à de {{jsxref("Function.prototype.apply", "apply()")}}, a principal diferença é que <code>call()</code> aceita uma <strong>lista de argumentos</strong>, enquanto <code>apply()</code> aceita <strong>um único array de argumentos.</strong></p>
+</div>
+
+<h2 id="Sintaxe">Sintaxe</h2>
+
+<pre class="syntaxbox"><code><var>fun</var>.call(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...]]])</code></pre>
+
+<h3 id="Parâmetros">Parâmetros</h3>
+
+<dl>
+ <dt><code>thisArg</code></dt>
+ <dd>O valor de  <code>this</code>  proveu a chamada para <em><code>fun</code></em>. Note que <code>this</code> pode não ser o valor atual visto pelo método: se esse método é uma função em {{jsxref("Functions_and_function_scope/Strict_mode", "non-strict mode", "", 1)}} code, {{jsxref("Global_Objects/null", "null")}} e {{jsxref("Global_Objects/undefined", "undefined")}} serão reescritos com o objeto global, e valores primitivos serão encaixados.</dd>
+ <dt><code>arg1, arg2, ...</code></dt>
+ <dd>Argumentos para  o objeto.</dd>
+</dl>
+
+<h2 id="Descrição">Descrição</h2>
+
+<p>Você pode atribuir um objeto <code>this</code> diferente quando executar uma função existente. <code>this</code> refere-se ao objeto atual, o objeto em execução. Com <code>call</code>, 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.</p>
+
+<h2 id="Exemplos">Exemplos</h2>
+
+<h3 id="Exemplo_Usando_call_para_encadear_construtores_para_um_objeto">Exemplo: Usando <code>call</code> para encadear construtores para um objeto</h3>
+
+<p>Você pode usar <code>call</code> para encadear construtores para um objeto, similar ao  Java. No seguinte exemplo, o construtor do  objeto <code>Product</code> é definido com dois parâmetros, <code>name</code> e <code>price</code>. Outras duas funções <code>Food</code> e <code>Toy</code> executam <code>Product</code> passando <code>this,</code> <code>name</code> e <code>price</code>. O Produto inicializa as propriedades <code>name</code> e <code>price</code>,  ambos definem o <code>category</code>.</p>
+
+<pre class="brush: js">function Product(name, price) {
+ this.name = name;
+ this.price = price;
+
+ if (price &lt; 0) {
+ throw RangeError('Cannot create product ' +
+ this.name + ' with a negative price');
+ }
+
+ return this;
+}
+
+function Food(name, price) {
+ Product.call(this, name, price);
+ this.category = 'food';
+}
+
+Food.prototype = Object.create(Product.prototype);
+
+function Toy(name, price) {
+ Product.call(this, name, price);
+ this.category = 'toy';
+}
+
+Toy.prototype = Object.create(Product.prototype);
+
+var cheese = new Food('feta', 5);
+var fun = new Toy('robot', 40);
+</pre>
+
+<h3 id="Exemplo_Usando_o_call_para_chamar_funções_anônimas">Exemplo: Usando o <code>call</code> para chamar funções anônimas</h3>
+
+<p>Neste exemplo, criamos uma função anônima que usa o <code>call</code> 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 <code>this</code> , mas isso foi feito apenas para explicação.</p>
+
+<pre class="brush: js">var animais = [
+ { especie: 'Lion', nome: 'King' },
+ { especie: 'Whale', nome: 'Fail' }
+];
+
+for (var i = 0; i &lt; animais.length; i++) {
+ (function(i) {
+ this.print = function() {
+ console.log('#' + i + ' ' + this.especie
+ + ': ' + this.nome);
+ }
+ this.print();
+ }).call(animais[i], i);
+}
+</pre>
+
+<h3 id="Usando_call_para_chamar_a_função_e_especificar_o_contexto_de_'this'">Usando <code>call</code> para chamar a função e especificar o contexto de 'this'</h3>
+
+<p>No exemplo abaixo, quando vamos chamar a apresentação, o valor de this será associado ao objeto i.<br>
+  </p>
+
+<pre><code>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</code></pre>
+
+<h2 id="Especificações">Especificações</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Especificações</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comentário</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES1')}}</td>
+ <td>{{Spec2('ES1')}}</td>
+ <td>Definição inicial. Implementado no JavaScript 1.3.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilidade_de_Browser">Compatibilidade de Browser</h2>
+
+<div>{{CompatibilityTable}}</div>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Funcionalidade</th>
+ <th>Chrome</th>
+ <th>Firefox (Gecko)</th>
+ <th>Internet Explorer</th>
+ <th>Opera</th>
+ <th>Safari</th>
+ </tr>
+ <tr>
+ <td>Suporte básico</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>Funcionalidade</th>
+ <th>Android</th>
+ <th>Chrome for Android</th>
+ <th>Firefox Mobile (Gecko)</th>
+ <th>IE Mobile</th>
+ <th>Opera Mobile</th>
+ <th>Safari Mobile</th>
+ </tr>
+ <tr>
+ <td>Suporte básico</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ <td>{{CompatVersionUnknown}}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<h2 id="See_also" name="See_also">Veja também</h2>
+
+<ul>
+ <li>{{jsxref("Function.prototype.bind()")}}</li>
+ <li>{{jsxref("Function.prototype.apply()")}}</li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript">Introdução à JavaScript Orientado à Objetos</a></li>
+</ul>