JavaScript Function.prototype.call() Método

El método call() permite asignar llamadas a funciones pertenecientes a un objeto y se llama para un objeto diferente. Proporciona un nuevo valor de este a la función. El método call() le permite escribir un método una vez y permite que se herede en otro objeto, sin volver a escribir el método para el nuevo objeto.

Sintaxis: 
 

myFunc.call([thisArg[, arg1, arg2, ...argN]])

Parámetros: 
 

  • thisArg: Los valores a usar como este al llamar a la función myFunc .
  • arg1, arg2, …, argN: Estos son los argumentos para la función mencionada anteriormente.

Nota: En ciertos casos, thisArg puede no ser el valor real. Si el método está en modo no estricto, los valores primitivos se convertirán en objetos y el valor nulo, indefinido , se reemplazará con el objeto global.

Valor de retorno: Devuelve el valor y los argumentos especificados como resultado de la llamada de la función.
 

Ejemplo 1: El siguiente ejemplo demuestra el uso de llamadas a constructores de strings para un objeto.

html

<script>
function Product(name,
     price) {
    this.name = name;
    this.price = price;
  }
   
  function Vehicle(name,
           price) {
   Product.call(this,
           name, price);
    this.category = 'vehicle';
  }
   
  function Restaurant(name,
           price) {
   Product.call(this,
           name, price);
    this.category = 'restaurant';
  }
   
  const car = new Vehicle('Suzuki',
        100000);
  const restau = new
        Restaurant('KFC', 1000);
 
  console.log(car);
  console.log(restaurant);
</script>

Producción:

Ejemplo 2: El siguiente ejemplo demuestra el uso del método call() para invocar una función anónima.

html

<script>
const Birds = [
    { species: 'Pigeon', name: 'King' },
    { species: 'Crow', name: 'Fail' }
  ];
   
let i=0;
 while(i<Birds.length){
  (function(i) {
    this.print = function() {
     console.log('#' + i + ' '
            + this.species
              + ': ' + this.name);
      }
      this.print();
    }).call(Birds[i], i);
    ++i;
  }
</script>

Producción:

#0 Pigeon: King
#1 Crow: Fail

Ejemplo 3: El siguiente ejemplo demuestra el uso del método call para invocar una función y especificar el contexto para ‘this’ .

html

<script>
function greet() {
  const reply = [this.animal,
    'typically sleep between',
        this.sleepDuration].join(' ');
    console.log(reply);
  }
   
  const obj = {
    animal: 'Rats',
    sleepDuration: '2 and 5 hours'
  };
   
  greet.call(obj);
</script>

Producción: 
 

 Rats typically sleep between 2 and 5 hours

Ejemplo 4: El siguiente ejemplo demuestra el uso del método call() para invocar una función sin especificar el primer argumento.

html

<script>
var str = 'Brad';
 
function display() {
  console.log('string value is %s ',
     this.str);
}
 
display.call();
</script>

Producción:

 string value is Brad

Nota: En modo estricto, el valor de este será indefinido.

html

<script>
'use strict';
 
var str = 'Brad';
 
function display() {
  console.log('str value is %s ',
   this.str);
}
display.call();
</script>

Producción:

Cannot read property 'str' of undefined

Publicación traducida automáticamente

Artículo escrito por thacker_shahid y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *