Heim > Web-Frontend > js-Tutorial > Hauptteil

js-Zeigeproblem

小云云
Freigeben: 2017-12-08 15:00:49
Original
1503 Leute haben es durchsucht
  1. 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
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

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

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

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

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

Verwandte Empfehlungen:

Umfassende Analyse davon in JavaScript

Wie man dies in js verwendet

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!

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