Heim > Web-Frontend > js-Tutorial > JavaScript var und this, {} und function

JavaScript var und this, {} und function

php中世界最好的语言
Freigeben: 2018-03-16 14:23:49
Original
2147 Leute haben es durchsucht

Dieses Mal bringe ich Ihnen JavaScripts var und this, {} und function, Verwenden Sie JavaScripts var und this, {} und function Notizen Was sind die folgenden?

JavaScript var wird zum Definieren einer Variablen verwendet und wird häufig zum Definieren oder Aufrufen einer Eigenschaft oder Methode verwendet. Aber im globalen Bereich sind this und var define variables gleichwertig.

Fenster

 console.log('window:', name); var name = 'stone'; this.name = 'niqiu';
 console.log('var:',name);
 console.log('this:',this.name);
Nach dem Login kopieren

Fensterobjekt hat ein Namensattribut, der Anfangswert ist leer, aber der erste Konsole So erhalten Sie den Wert, wenn . Es wurde festgestellt, dass dieses Fenster den letzten Wert aufzeichnet. Öffnen Sie die Seite erneut und führen Sie einfach console.log('window:', name); aus und die Ausgabe ist leer.

  console.log('window:', name);  var name = 'stone';
Nach dem Login kopieren

Zweimal aktualisieren und dann Stein ausgeben Das Fensterobjekt wird also beim Aktualisieren nicht neu erstellt. window ist ein {}-Objekt. Es gibt keinen Konstruktor und kann nicht neu sein.

Funktion und {}

Innerhalb der Funktion definiert var lokale Variablen und diese definiert Attribute. Diese beiden sind nicht abgedeckt. Neu erstellte Objekte können jedoch keine lokalen Variablen erhalten.

     var Fool = function () {            var name = 'stone';            var nikename = 'stoneniqiu';            this.name = 'niqiu';            this.getName = function () {
                console.log('var', name);
                console.log('this', this.name);
            };            this.getNickname = function() {                return nikename;
            };
        };
Nach dem Login kopieren
    console.log(f.name); //niqiu
    console.log(f.nikename);//undefined
    console.log(f.getNickname());//stoneniqiu
Nach dem Login kopieren

Aber wenn Sie {} verwenden, um ein Objekt zu definieren, sind alle internen Variablen Eigenschaften.

  var block = {
            name: 'stone',
            nickname:'stoneniqiu',
            getName: function () {                // return this.name;//stone
                return name; //'windows name';            },
            getNickname:function() {                return this.nickname;
            },
            printAllName:function() {
                console.log(this.getNickname());
                console.log(this.getName());
            }
        };
       console.log(block.name);//stone
       console.log(block.getName()); //windows name
Nach dem Login kopieren

Wie das Fensterobjekt kann das von {} erstellte Objekt nicht neu sein, da es keinen Konstruktor gibt.

Wenn das Objekt also wiederverwendet wird und relativ groß ist, ist es besser, das Funktionsformular zu verwenden, um private Variablen und öffentliche Eigenschaften oder Methoden zu trennen. Das interne Modul der Funktion kann die Form {} verwenden.

Methoden, die dadurch den Kontext erhalten können, zu dem sie gehören, werden öffentliche Methoden genannt. Die Bindung an das Objekt erfolgt zum Zeitpunkt des Aufrufs. Diese „super“ verzögerte Bindung ermöglicht der Funktion eine hohe Wiederverwendung.

Dies bezieht sich auf das aktuell ausgeführte Objekt, um diese Änderung zu vermeiden. Um dies vorübergehend zu speichern, wird häufig eine Variable verwendet.

var self=this
Nach dem Login kopieren

Magischer Rückruf

Schauen wir uns ein Beispiel an. Die Rückrufmethode ist in den Parametern des Objekts definiert, aber eine Methode, die wir an Fool selbst übergeben haben, wurde tatsächlich ausgeführt.

 var Fool = function (config) {           var parmas = {
               callback: function() {
                   console.log('raw callback');
               }
           };
           parmas = $.extend(parmas, config);           var name = 'stone';           var nikename = 'stoneniqiu';           this.name = 'niqiu';           this.getName = function () {
               console.log('var', name);
               console.log('this', this.name);
           };           this.getNickname = function () {               return nikename;
           };           this.doSomething = function () {
               parmas.callback();
           };
       };       var f = new Fool({callback:function() {
           $("#bt").click(function() {               f.getName()
           });
       }});
       f.doSomething();
Nach dem Login kopieren

wird ordnungsgemäß ausgeführt. Klicken Sie auf die Schaltfläche, um die getName-Methode auszulösen. Wenn Sie jedoch direkt so schreiben, wird ein Fehler gemeldet, was sehr vernünftig ist.

 var f = new Fool({callback:f.getName()});
Nach dem Login kopieren

Ändern Sie es erneut und umschließen Sie es mit der anonymen Funktion, und es kann weiterhin ausgeführt werden.

var f = new Fool({callback:function() {             (function() {
               f.getName();
            })();
       }});
       f.doSomething();
Nach dem Login kopieren

Ich habe es heute herausgefunden. Das ist tatsächlich ein Abschlussproblem, das innerhalb der Funktion ausgeführt wird. Es bindet das externe f, nicht den Moment, in dem die Funktion ist f konstruiert, daher ist es egal, ob f erstellt wird, wenn die anonyme Funktion erstellt wird. Es entspricht dem folgenden klassischen Problem:

var addhandle=function(node){var ifor(i=0;i<node.length;i++){
 node[i].onclick=function(e){
 alert(i);
} 
}
}
Nach dem Login kopieren

Wenn die obige Methode ausgeführt wird, ist i nach dem Ende der Schleife gebunden. Anstatt in diesem Moment durch i zu blättern. Wenn der Code in der obigen Schleife wie folgt geändert wird.

nodes[i].onclick=function(i){ return function(e){
 alert(e)
 }
}(i)
Nach dem Login kopieren

ist die Variable i beim Aufbau der Funktion.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.

Empfohlene Lektüre:

Ereignisverwaltung in JavaScript

Detaillierte Erklärung von Promise in jQuery, Angular und Node

Das obige ist der detaillierte Inhalt vonJavaScript var und this, {} und function. 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