Heim  >  Artikel  >  Web-Frontend  >  Einige geringe Kenntnisse über dieses Schlüsselwort in Javascript_Javascript-Kenntnissen

Einige geringe Kenntnisse über dieses Schlüsselwort in Javascript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:09:261303Durchsuche

Javascript sollte mittlerweile eine der beliebtesten plattformübergreifenden Sprachen sein. Ich habe mit einigen interessanten Dingen im Frontend herumgespielt, aber ich habe festgestellt, dass ich diese Sprache nicht gut beherrsche. Es ist ein bisschen Zeitverschwendung, deshalb möchte ich die freie Zeit jetzt nutzen, um einige fehlende Dinge hinzuzufügen.

Implizite Bindung davon

Das war etwas, das mich zunächst verwirrte, als ich es zum ersten Mal sah, verstand ich es nicht. Dann können in ähnlichen Situationen ähnliche Methoden zur Lösung desselben Problems eingesetzt werden. Also habe ich versucht, das Wissen zu ordnen und es leichter auffindbar zu machen.

Dies ist ein Designfehler in der Javascript-Sprache, aber es scheint, dass dieser Fehler unvermeidlich ist. Funktionen sind Objekte, Arrays sind Objekte usw. Zitieren von Beispielen aus „Javascript: The Good Parts“

Code kopieren Der Code lautet wie folgt:

Funktion add (a,b) {return a b}
var sum = add (3,4);
console.log(sum); //sum = 7

Das Ergebnis der Summe ist zu diesem Zeitpunkt 7.

Code kopieren Der Code lautet wie folgt:

> Art des Hinzufügens
> 'Nummer'

Wie Sie hier sehen können, ist die Additionsart numerisch.

Beim Aufruf einer Funktion in diesem Modus wird diese an eine globale Variable gebunden.
Das heißt, in der aktuellen Umgebung können wir dies
so nennen

Code kopieren Der Code lautet wie folgt:

this.add(3,4)

Dies ist die implizite Bindung von this, und dies wird auf unterschiedliche Weise gebunden.
Code kopieren Der Code lautet wie folgt:

var hallo = function (){
Geben Sie „Hallo,“ this.name;
zurück };
name = 'this';
console.log(hello());

Zu diesem Zeitpunkt erhalten wir Hallo, das. Und wann
Code kopieren Der Code lautet wie folgt:

var hallo = function (){
Geben Sie „Hallo,“ this.name;
zurück };
var user = {
Hallo: Hallo,
Name: 'phodal',

};
console.log(user.hello());


Zu diesem Zeitpunkt weist der Benutzer „Hallo“ auf die Funktion „Hallo“ hin. Wie ist dies nach unserem Verständnis möglich, also handelt es sich um einen Fehler.

Wenn wir in dieser Methode eine Variable definieren und ihr den Wert this zuweisen, dann kann die interne Funktion über diese Variable darauf zugreifen.

var that = this

Wenn die Situation also etwas komplizierter ist, müssen wir Folgendes verwenden:

Code kopieren Der Code lautet wie folgt:

vat that = this;

Tipps:

1.Der Umfang dieser Variablen wird immer durch ihre nächste einschließende Funktion bestimmt.
2. Verwenden Sie eine lokale Variable (z. B. me, self, that), um diese Bindung intern verfügbar zu machen.

Ein einfaches Beispiel:

Code kopieren Der Code lautet wie folgt:

var M = function(){
This.name = "M";
};

var MM = function(){
z = neues M();
This.name = "MM";

z.printName = function(){
console.log(this.name);
};
Geben Sie z.printName();
zurück };

var mm = neues MM;


Zu diesem Zeitpunkt deutet dies auf die M-Funktion hin, nicht auf MM selbst. Wenn wir dies in M ​​entfernen, ist der zurückgegebene Wert undefiniert. Also erstellen wir einen Alias ​​für den aktuellen Bereich dieses Bereichs, z. B. that oder self usw.:
Code kopieren Der Code lautet wie folgt:

var MM = function(){
z = neues M();
This.name = "MM";
var self = this;
z.printName = function(){
          console.log(self.name);
};
Geben Sie z.printName();
zurück };

Dadurch wird eine MM zurückgegeben. Darüber hinaus können Sie in ES5 die Bind-Methode der Callback-Funktion verwenden.

Code kopieren Der Code lautet wie folgt:

var MM = function(){
z = neues M();
This.name = "MM";
z.printName = function(){
console.log(this.name);
}.bind(this);
Geben Sie z.printName();
zurück };

bind kann eine Methode an einen Empfänger binden.

Andere

Noch ein Hallo, Welt

Ich bin zufällig auf print('Hello')('World') gestoßen und habe dann 'Hello, World' ausgegeben.

Die sogenannten Funktionen höherer Ordnung scheinen sehr nützlich zu sein. Wenn Sie interessiert sind, können Sie den nächsten Artikel lesen.

Stellungnahme:
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