Quería invocar una función utilizando el método javascript apply(). Esto funciona bien si la función no tiene argumentos. es decirMétodo de solicitud de llamada con argumentos en JavaScript
function test()
{
console.log(this);
}
body = document.getElementsByTagName("body")[0]; // shortcut to body element
test.apply(body); // returns [object HTMLBodyElement]
Pero me parece que no puede hacer lo mismo para invocar una función que tiene argumentos:
function test(msg)
{
console.log(msg);
}
body = document.getElementsByTagName("body")[0]; // shortcut to body element
test(this).apply(body); // mysteriously returns the correct result, then
// typeError: 'undefined' is not an object (evaluating "test(this).apply".
Los ejemplos anteriores son completamente trivial, pero el grano de mi pregunta es: ¿cómo Uso el método apply() para invocar una función con argumentos.
Es importante tener en cuenta que el segundo argumento debe ser una matriz, en lugar de solo un elemento. 'test.apply (null, body)' se rompe para mí (Chrome 35), pero 'test.apply (null, [body])' funciona. – FeifanZ
¿Cuál es el uso real de usar el método de aplicación? ¿Hay algún beneficio? – Thunder
Estoy seguro de que hay una gran cantidad de usos reales. Algunos que vienen a la mente son las funciones de parche de mono (incluidos los built-in), para [funciones variadic] (http://en.wikipedia.org/wiki/Variadic_function), y para especificar 'this' para las funciones de devolución de llamada. –