Javascript dieses Schlüsselworts detaillierte Erklärung_Grundkenntnisse
WBOY
Freigeben: 2016-05-16 16:33:05
Original
1222 Leute haben es durchsucht
1. Dies zeigt auf das vom Konstruktor instanziierte Objekt
Im vorherigen Artikel haben wir den Unterschied zwischen dem Aufruf des Konstruktors mit new und dem Aufruf ohne new erwähnt, wie im folgenden Beispiel gezeigt:
Funktion Benjamin(Benutzername, Geschlecht) {
This.username = Benutzername;
This.sex = Sex;
}
var benjamin = neuer Benjamin("zuojj", "männlich");
//Ausgaben: Benjamin{sex: "male",username: "zuojj"}
console.log(benjamin);
var ben = Benjamin("zhangsan", "weiblich");
//Ausgaben: undefiniert
console.log(ben);
Wenn der Konstruktor als normale Funktion aufgerufen wird, gibt es keinen Rückgabewert und dieser zeigt auf das globale Objekt. Wie können wir also Probleme vermeiden, die durch das Fehlen eines neuen Schlüsselworts verursacht werden?
Funktion Benjamin(Benutzername, Geschlecht) {
//Überprüfen Sie, ob „this“ ein „Benjamin“-Objekt ist
if(diese Instanz von Benjamin) {
This.username = Benutzername;
This.sex = Sex;
}else {
Geben Sie den neuen Benjamin zurück (Benutzername, Geschlecht);
}
}
var benjamin = neuer Benjamin("zuojj", "männlich");
//Ausgaben: Benjamin{sex: "male",username: "zuojj"}
console.log(benjamin);
var ben = Benjamin("zhangsan", "weiblich");
//Ausgaben: Benjamin {Benutzername: „zhangsan“, Geschlecht: „weiblich“}
console.log(ben);
Im obigen Beispiel prüfen wir zunächst, ob es sich um eine Instanz von Benjamin handelt. Wenn nicht, verwenden Sie new, um den Konstruktor automatisch aufzurufen und zu instanziieren. Dies bedeutet, dass wir uns keine Sorgen mehr machen müssen, dass das Schlüsselwort new zum Instanziieren fehlt Konstrukteur. Natürlich können wir auf diese Weise eine schlechte Angewohnheit entwickeln. Was wäre, wenn wir dieses Phänomen vermeiden würden? Wir können einen Fehler wie diesen auslösen:
Die bind()-Methode erstellt eine neue Funktion, deren Schlüsselwort this beim Aufruf auf den bereitgestellten Wert gesetzt wird, wobei eine bestimmte Folge von Argumenten allen Argumenten vorausgeht, die beim Aufruf der neuen Funktion angegeben werden.
Beispiel 1:
this.x = 9;
var module = {
x: 81,
getX: function() { return this.x;
};
//Ausgaben: 81
console.log(module.getX());
var getX = module.getX;
//Ausgaben: 9, denn in diesem Fall bezieht sich „this“ auf das globale Objekt
console.log(getX);
// eine neue Funktion erstellen, wobei „this“ an das Modul gebunden ist
varboundGetX = getX.bind(module);
//Ausgaben: 81
console.log(boundGetX());
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