Heim > Artikel > Web-Frontend > Verwandte Fragen dazu
Ich stoße in meinem Studium häufig auf dieses Problem. In diesem Artikel werden die damit verbundenen Probleme erläutert.
Mehrere Fälle davon als globales Objektfenster
Dies als Funktionsaufruf
Dies als interne verschachtelte Funktion
in setTimeout, setInteval ist dies immer noch ein globales Variablenfenster
In mehreren Fällen handelt es sich um eine nicht-globale Variable
Konstruktor (der Konstruktor soll ein neues Objekt über eine Funktion generieren, zu diesem Zeitpunkt bezieht sich dies auf dieses neue Objekt )
wird als Objektmethode aufgerufen, wie zum Beispiel:
var obj1 = { name: 'Byron', fn : function(){ console.log(this); } }; obj1.fn(); // obj1var fn2 = obj1.fn; fn2(); //此时this仍然指的是全局对象window
DOM-Objektbindungsereignis, das das Quell-DOM-Objekt darstellt (es gibt Fehler in niedrigeren Versionen von IE und verweist auch auf Fenster)
Verwenden Sie die Bindefunktion, um die ursprüngliche Funktion zu binden. Zu diesem Zeitpunkt bezieht sich dies auf den ersten Parameter, der an bind übergeben wird. Zum Beispiel:
var obj1 = { name: 'Byron', fn : function(){ console.log(this); } }; obj1.fn(); //obj1var fn2 = obj1.fn;
fn2(); //此时this仍然指的是全局对象windowvar fn3 = obj1.fn.bind(obj1);fn3(); //此时this指的为obj1(此方法比较灵活,可利用此方法将所要传送给this 的参数指定为bind的第一个对象) apply和call设置this,如: fn.call(context,num1,num2...);fn.apply(context,numArray)
Der erste Parameter ist dieses Objekt. Der Unterschied besteht darin, dass call eine Parameterliste und apply ein Parameterarray akzeptiert.
Aufrufer: Wenn eine Funktion f im globalen Bereich aufgerufen wird, ist f.caller null. Wenn dagegen eine Funktion in einem anderen Funktionsbereich aufgerufen wird, zeigt f.caller auf die aufrufende Funktion einfach so verstanden, dass sich Aufrufer auf seine übergeordnete Funktion bezieht. Zum Beispiel:
function fn(){ console.log(fn.caller); function fn2(){ console.log(fn2.caller) } fn2() }
fn(); callee,当函数被调用的时候arguments.callee(匿名函数的时候很好用,可以调用自身) var i = 1;window.onclick = function(){ console.log(1); if(i<5){ i++; setTimeout(arguments.callee,200); }}
In diesem Artikel werden die damit verbundenen Probleme erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
JS-Arrays, Strings und mathematische Funktionen
Über JS-Zeitobjekte und Rekursionsprobleme
Das obige ist der detaillierte Inhalt vonVerwandte Fragen dazu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!