Estaba navegando a través del JavaScript Garden cuando tropecé con el hack Function.call.apply que se utiliza para crear "envoltorios rápidos, sin encuadernar". Dice:¿Cuál es el propósito de usar Function.call.apply en JavaScript?
Otro truco es usar tanto la llamada como la aplicación juntas para crear envoltorios rápidos y sin unir.
function Foo() {} Foo.prototype.method = function(a, b, c) { console.log(this, a, b, c); }; // Create an unbound version of "method" // It takes the parameters: this, arg1, arg2...argN Foo.method = function() { // Result: Foo.prototype.method.call(this, arg1, arg2... argN) Function.call.apply(Foo.prototype.method, arguments); };
Lo que no entiendo es por qué molestarse usando Function.call.apply cuando bastaría Function.apply. Después de todo, ambos son semánticamente equivalentes.
Sí publiqué un enlace al [JavaScript Garden] (http://javascriptgarden.info/). Si desea ir directamente a la sección que contiene la publicación, haga clic en [aquí] (http://javascriptgarden.info/#function.arguments). –
tnx, - parece que implican que este truco le da cierta velocidad ... pero, realmente, solo ** no lo use **. – c69
@Aadit 'Function.call.apply' y' Function.apply' no puede ser el mismo aquí porque el primero aplica 'Function.call' mientras que el segundo trata de aplicar el constructor' Function'. Detalles en mi respuesta, pero apuesto a que si Ivo Wetzel viniera a responder esto, sería mucho más elocuente y comprensible. Esto es algo bastante profundo. Estoy de acuerdo en que probablemente no es algo que debas usar a menos que quieras que tus colegas gasten, oh no sé, una "media hora" tratando de entenderlo. :) –