Stavo navigando attraverso lo JavaScript Garden quando mi sono imbattuto nel trucco Function.call.apply che viene utilizzato per creare "wrapper veloci e non associati". Dice:Qual è lo scopo dell'uso di Function.call.apply in JavaScript?
Un altro trucco consiste nell'utilizzare entrambe le chiamate e applicare insieme per creare wrapper veloci e non associati.
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); };
Quello che non capisco è perché preoccuparsi utilizzando Function.call.apply quando Function.apply sarebbe sufficiente. Dopo tutto, entrambi sono semanticamente equivalenti.
Ho inserito un collegamento al [JavaScript Garden] (http://javascriptgarden.info/). Se vuoi saltare direttamente alla sezione che contiene il post, quindi fare clic su [qui] (http://javascriptgarden.info/#function.arguments). –
tnx, - sembra che implichino questo hack dà un po 'di velocità .. ma, davvero, solo ** non usarlo **. – c69
@Aadit 'Function.call.apply' e' Funzione.apply' non può essere lo stesso qui perché il primo applica 'Function.call' mentre il secondo prova ad applicare il costruttore' Function'. Dettagli nella mia risposta, ma scommetto che se Ivo Wetzel fosse venuto a rispondere, sarebbe stato molto più eloquente e comprensibile. Questa è roba piuttosto profonda. Sono d'accordo che probabilmente non è qualcosa che dovresti usare a meno che tu non voglia che i colleghi spendano, oh non lo so, un 'ora e mezza a cercare di capirlo. :) –