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