Heim > Artikel > Web-Frontend > js-Zeigeproblem
Dies deutet darauf hin:
json und die Prototypenkette sind gleich.
Ich habe viele Artikel gelesen und alle sagen, dass es ziemlich kompliziert ist.
Dies zeigt auf das aufrufende Objekt.
Posten Sie den Code direkt.
var x = { test:function(){ console.log(this); }; }; x.test()//x{...}; var n = x.test(); n();//Window
Das erste Mal ist ein x-Aufruf, also ist console.log x, das zweite Mal entspricht window.n(), das ist der Fensteraufruf, damit das Fenster angezeigt wird.
Vielleicht ist mein Verständnis oberflächlich. Ich denke, dass dies das Objekt vor dem „.“ der Funktion ist, das „dies“ enthält. Was die Bewerbung und die Ausschreibung betrifft, wird es einige Änderungen geben, die ich im Folgenden kurz erwähnen werde.
Der Unterschied zwischen apply und call besteht darin, dass apply (Objekt, [Parametersatz]) und call (Objekt, Parameter, Parameter, Parameter, Parameter, Parameter ...) ist. Geben Sie zuerst einen Code ein.
function ed(){ this.age = ed; }; function ing(){ this.age = 2; this.sex = 0; this.showAge = function(){ console.log(this.age); console.log(this.sex); } }; var edObj = new ed(); var ingObj = new ing(); ingObj.showAge.apply(edObj);//2,Undefined
Um es ganz klar auszudrücken: Es ist so, als würde ein Programmierer Computer für die Entwicklung ändern. Abgesehen von der Logik, Daten in seinem eigenen Kopf zu verarbeiten, müssen andere Umgebungsvariablen verwendet werden. Die Methode vor apply ist das Denken des Programmierers, und die Methode in () ist der neue Computer. Die folgenden Parameter sind die für die Methode erforderlichen Parameter. Sie können diese selbst übergeben.
2. Pfeilfunktionszeigen: Die Pfeilfunktion hat keinen Namen, daher kann sie nicht namentlich aufgerufen werden, daher zeigt sie immer auf Fenster.
3. Variablenzeigen: Ich denke das Es handelt sich um ein Problem mit Speicherzeigern. Es ist jedoch leicht zu verstehen, dass Konstanten den Speicher belegen und Variablen addiert werden. Es ist, als ob zwei oder mehr Kinder ein Spiel spielen. Solange du nicht den Platz wechselst oder mit anderen Leuten spielst, gehört das, was dir gehört, und was mir gehört, gehört dir. Diese Erinnerung ist wie ein Kinderspielplatz, und die Spielzeuge, die die Kinder besitzen, sind ihre Attribute (diese Kinder sind relativ großzügig).
Lassen Sie uns drei Beispiele nennen:
var xArr = []; var xJson = {}; (()=>{ let yArr = xArr, yJson = xJson; yArr.push(1); yJson.age = 1; })();//这里说明即便是块级变量也是可以一起参与玩耍的,屋里玩耍的孩子玩具一样可以被其他小孩在屋外展示。 console.log(xArr);//[1]; console.log(xJson);//{age: 1}
Weil Y noch nie jemanden zum Spielen gefunden hat (siehe Beispiel 3, wie man andere zum Spielen findet), sind die Spielzeuge von Y die Spielzeuge von X.
var x = 0, a = 2. b = 3, y = x; console.log(y);//0 y = a+b; console.log(x);//0 console.log(y);//5
Weil Y den Ort zum Spielen geändert hat (eine Erinnerung geöffnet hat, auf die man zeigen kann), kann x Ys Spielzeug nicht bekommen.
var x = {}, a = {}, y = x, z = y, y = a; y.age = 1; console.log(x);//{} console.log(y);//{age:1} console.log(z);//{} console.log(a);//{age:1} z.age = 2; console.log(x);//{age:2}
Dies könnte von nun an eine Geschichte über das Treffen mit Fremden sein...
1.Dies verweist auf:
json und Prototyp Kette Es ist das Gleiche.
Ich habe viele Artikel gelesen, die sagen, dass es ziemlich kompliziert ist.
Dies zeigt auf das aufrufende Objekt.
Posten Sie den Code direkt.
var x = { test:function(){ console.log(this); }; }; x.test()//x{...}; var n = x.test(); n();//Window
Das erste Mal ist x-Aufruf, also ist console.log x. Das zweite Mal entspricht window.n(), was ein Fensteraufruf ist, also wird Fenster angezeigt.
Vielleicht ist mein Verständnis oberflächlich. Ich denke, dass dies das Objekt vor dem „.“ der Funktion ist, das „dies“ enthält. Was die Bewerbung und die Ausschreibung betrifft, wird es einige Änderungen geben, die ich im Folgenden kurz erwähnen werde.
Der Unterschied zwischen apply und call besteht darin, dass apply (Objekt, [Parametersatz]) und call (Objekt, Parameter, Parameter, Parameter, Parameter, Parameter ...) ist. Geben Sie zuerst einen Code ein.
function ed(){ this.age = ed; }; function ing(){ this.age = 2; this.sex = 0; this.showAge = function(){ console.log(this.age); console.log(this.sex); } }; var edObj = new ed(); var ingObj = new ing(); ingObj.showAge.apply(edObj);//2,Undefined
Um es ganz klar auszudrücken: Es ist so, als würde ein Programmierer Computer für die Entwicklung ändern. Abgesehen von der Logik, Daten in seinem eigenen Kopf zu verarbeiten, müssen andere Umgebungsvariablen verwendet werden. Die Methode vor apply ist das Denken des Programmierers, und die Methode in () ist der neue Computer. Die folgenden Parameter sind die für die Methode erforderlichen Parameter. Sie können diese selbst übergeben.
2. Pfeilfunktionszeigung: Die Pfeilfunktion hat keinen Namen, daher kann sie nicht namentlich aufgerufen werden, daher zeigt sie immer auf Fenster.
3. Variablenzeigung: Ich denke das Es handelt sich um ein Problem mit Speicherzeigern. Es ist jedoch leicht zu verstehen, dass Konstanten den Speicher belegen und Variablen addiert werden. Es ist, als ob zwei oder mehr Kinder ein Spiel spielen. Solange du nicht den Platz wechselst oder mit anderen Leuten spielst, gehört das, was dir gehört, und was mir gehört, gehört dir. Diese Erinnerung ist wie ein Kinderspielplatz, und die Spielzeuge, die die Kinder besitzen, sind ihre Attribute (diese Kinder sind relativ großzügig).
Lassen Sie uns drei Beispiele nennen:
var xArr = []; var xJson = {}; (()=>{ let yArr = xArr, yJson = xJson; yArr.push(1); yJson.age = 1; })();//这里说明即便是块级变量也是可以一起参与玩耍的,屋里玩耍的孩子玩具一样可以被其他小孩在屋外展示。 console.log(xArr);//[1]; console.log(xJson);//{age: 1}
Weil Y noch nie jemanden zum Spielen gefunden hat (siehe Beispiel 3, wie man andere zum Spielen findet), sind die Spielzeuge von Y die Spielzeuge von X.
var x = 0, a = 2. b = 3, y = x; console.log(y);//0 y = a+b; console.log(x);//0 console.log(y);//5
Weil Y den Ort zum Spielen geändert hat (eine Erinnerung geöffnet hat, auf die man zeigen kann), kann x Ys Spielzeug nicht bekommen.
var x = {}, a = {}, y = x, z = y, y = a; y.age = 1; console.log(x);//{} console.log(y);//{age:1} console.log(z);//{} console.log(a);//{age:1} z.age = 2; console.log(x);//{age:2}
Verwandte Empfehlungen:
Umfassende Analyse davon in JavaScript
Eine kurze Einführung in diese Regel in JavaScript
Das obige ist der detaillierte Inhalt vonjs-Zeigeproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!