Baseline Widely available
ResumenEl método call()
llama a una función con un valor dado this
y con argumentos provistos individualmente.
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 método.
Si el método es una función en non-strict mode, null
y undefined
serán reemplazados con el objeto global, y valores primitivos serán convertidos a objetos.
arg1, arg2, ...
Argumentos para el objeto.
El resultado de llamar a la función con el this
especificado y los argumentos.
call()
permite que una función/método que pertenece a un objeto, ser asignada y llamada para un objeto diferente.
call()
provee un nuevo valor de this
a la función/método. Con call()
, puedes escribir un método una vez y heredarlo a otro objeto, sin tener que reescribir el método en el nuevo objeto.
Nota: Mientras la sintaxis de esta función es casi identica a la función apply()
, la diferencia fundamental es que call()
acepta una lista de argumentos, mientras apply()
accepta un arreglo sencillo de argumentos.
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
, pasándo this
, nombre
y precio
. Producto
inicializa las propiedades nombre
y precio
, ambas funciones especializadas definen la categoria
.
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 función anónima
En este ejemplo, creamos una función anónima y usamos call
para invocarla en cada objeto en un arreglo.
El propósito principal de la función anónima aquà es agregar una función 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 propósito explicativo.
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 también
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4