Ich vergesse immer die Verwendung dieser beiden Dinge und schreibe sie für eine Aufzeichnung auf.
Ihre Funktionen sind genau gleich, aber die übergebenen Parameter sind unterschiedlich
Bewerben
Apply akzeptiert zwei Parameter. Der zweite Parameter ist eine indizierte Sammlung (durchlaufbares Objekt). aufgerufen:
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
Anruf
Die im Aufruf übergebenen Parameter sind nicht festgelegt. Der erste Parameter stellt auch den This-Zeiger im Funktionskörper dar. Beginnend mit dem zweiten Parameter wird jeder Parameter der Reihe nach an die Funktion übergeben:
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
call ist ein syntaktischer Zucker für „aply“. Wenn der erste Parameter null ist, zeigt dieser im Funktionskörper auf das Hostobjekt, das ein Fenster im Browser ist.
Der Zweck des Anrufs und der Bewerbung
1. Ändern Sie dies so, dass es auf
zeigt
Das ist das Beispiel oben
2.Function.prototype.bind
Mock Function.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: 'cxs' }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();