Heim > Web-Frontend > js-Tutorial > Verwandte Fragen dazu

Verwandte Fragen dazu

jacklove
Freigeben: 2018-05-21 13:35:29
Original
1182 Leute haben es durchsucht

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
Nach dem Login kopieren

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;
Nach dem Login kopieren
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)
Nach dem Login kopieren

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()
}
Nach dem Login kopieren
fn();
callee,当函数被调用的时候arguments.callee(匿名函数的时候很好用,可以调用自身)
var i = 1;window.onclick = function(){    console.log(1);    if(i<5){        i++;        setTimeout(arguments.callee,200);    }}
Nach dem Login kopieren

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

Einige CSS-Styling-Grundlagen

Das obige ist der detaillierte Inhalt vonVerwandte Fragen dazu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage