[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Function/call [Back]  [Original]

Function.prototype.call() - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

Function.prototype.call()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.

Resumen

El mtodo call() llama a una funcin con un valor dado this y con argumentos provistos individualmente.

In this article

Sintaxis

function.call(thisArg[, arg1[, arg2[, ...]]])

Parametros

thisArg Opcional

El valor a usar como this cuando se llama a function.

Advertencia: En ciertos casos, thisArg puede no ser el valor actual visto por el mtodo.

Si el mtodo es una funcin en non-strict mode, null y undefined sern reemplazados con el objeto global, y valores primitivos sern convertidos a objetos.

arg1, arg2, ...

Argumentos para el objeto.

Valor de retorno

El resultado de llamar a la funcin con el this especificado y los argumentos.

Descripcin

call() permite que una funcin/mtodo que pertenece a un objeto, ser asignada y llamada para un objeto diferente.

call() provee un nuevo valor de this a la funcin/mtodo. Con call(), puedes escribir un mtodo una vez y heredarlo a otro objeto, sin tener que reescribir el mtodo en el nuevo objeto.

Nota: Mientras la sintaxis de esta funcin es casi identica a la funcin apply(), la diferencia fundamental es que call() acepta una lista de argumentos, mientras apply() accepta un arreglo sencillo de argumentos.

Ejemplos

Usando call para encadenar constructores para un objeto

Puede usar call para encadenar constructores para un objeto (similar a Java).

En el siguiente ejemplo, el constructor para el objeto Producto es definido con dos parametros, nombre y precio.

Otras dos funciones Comida y Juguete invocan a Producto, pasndo this, nombre y precio. Producto inicializa las propiedades nombre y precio, ambas funciones especializadas definen la categoria.

js
function Producto(nombre, precio) {
  this.nombre = nombre;
  this.precio = precio;

  if (precio < 0)
    throw RangeError(
      'No se puede crear el producto "' + nombre + '" con un precio negativo',
    );
  return this;
}

function Comida(nombre, precio) {
  Producto.call(this, nombre, precio);
  this.categoria = "comida";
}
Comida.prototype = new Producto();

function Juguete(nombre, precio) {
  Producto.call(this, nombre, precio);
  this.categoria = "juguete";
}
Juguete.prototype = new Producto();

var queso = new Comida("feta", 5);
var diversion = new Juguete("robot", 40);

Usando call para invocar una funcin annima

En este ejemplo, creamos una funcin annima y usamos call para invocarla en cada objeto en un arreglo.

El propsito principal de la funcin annima aqu es agregar una funcin print a cada objeto, el cual puede imprimir el ndice correcto en el arreglo.

Nota: Pasar el objeto como valor this no es estrictamente necesario, pero se hace con propsito explicativo.

js
var animales = [
  { especie: "Leon", nombre: "Rey" },
  { especie: "Whale", nombre: "Fail" },
];

for (var i = 0; i < animales.length; i++) {
  (function (i) {
    this.imprimir = function () {
      console.log("#" + i + " " + this.especie + ": " + this.nombre);
    };
    this.imprimir();
  }).call(animales[i], i);
}

Ver tambin


Web Proxy Viewer  |  New URL  |  Original Page