Ich habe dies während eines Interviews vor ein paar Tagen verwendet. Der Interviewer sagte, dass mein Verständnis etwas falsch sei. Ich habe einige Bücher und einige Blogs gelesen, einige Tests durchgeführt und festgestellt, dass mein Verständnis tatsächlich falsch war >
1. Globale Variablensollte die am häufigsten verwendete sein. Dies wird in einer Funktion aufgerufen, die eigentlich eine globale Variable
ist
var value="0"; function mei(){ var value="1"; console.log(this.value); //0 console.log(value); //1 } mei();
verweist
2.KonstruktorDies ist eine Verwendung, mit der ich besser vertraut bin. Verwenden Sie diese im Konstruktor. Nach dem Erstellen eines neuen Objekts zeigt dies auf das neue Objekt.
var value="window"; function mei(){ this.value=1; this.show=function(){ console.log(this.value) } } var m=new mei(); console.log(m.value); //1 m.show(); //1
3.Anrufen und bewerben
Leihen Sie sich die Beispiele direkt aus meinem Call-and-Apply-Blog aus
var p="456"; function f1(){ this.p="123"; } function f2() { console.log(this.p); } f2(); //456 f2.call(f1()); //123 f2.apply(f1()); //123
4. Die Funktion wird als Methode eines Objekts aufgerufen (wobei ich einen Fehler gemacht habe)
Ich wurde gebeten, ein Objekt mit mehreren Methoden zu schreiben. Ich habe plötzlich eine globale Variable definiert und diese dann verwendet, um sie in der Methode des Objekts aufzurufen. Ich sagte, es sollte Fenster sein, weil ich diese Methode selten verwende, und dachte, dass nur „Neu“ oder „Anruf“ die Richtung ändern würde. Er sagte, das sei falsch und bat mich, es mir noch einmal anzusehen , ich habe mich wirklich geirrt
var value="father"; function mei(){} mei.value="child"; mei.get=function(){console.log(this.value)}; mei.show=function(){console.log(value)}; mei.get(); //child mei.show(); //father
Was Vater betrifft, verstehe ich es so. Die Funktion, auf die show zeigt, ist in der globalen Umgebung definiert, der Wert ist in show nicht zu finden, also suche ich ihn in der Umgebung, in der er angezeigt wird ist definiert, und dann finde ich die globale Umgebung wertvoll. Wenn es hier ein Missverständnis gibt, hoffe ich, dass jemand darauf hinweisen kann!