Ich habe JS verwendet, um selbstgerechte objektorientierte Methoden zu schreiben. Ich bin auf ein Problem gestoßen, nämlich eine Methode zu definieren, wie folgt:
Die Codekopie lautet wie folgt:
FunktionslisteCommon2 (Erste, zweite, dritte)
{
this.first = function ()
{
alarm ("zuerst do"+zuerst);
}
}
ListCommon2.do1 = Funktion (zuerst)
{
// this.first ();
alarm ("zuerst do"+zuerst);
}
ListCommon2.Prototype.do2 = Funktion (zuerst)
{
// this.first ();
alarm ("zuerst do"+zuerst);
}
Was ist der Unterschied zwischen den beiden Methoden? Was ist die Funktion der Verwendung von Prototypen oder nicht?
Testcode:
Die Codekopie lautet wie folgt:
var t1 = new ListCommon2 ("Wasser kochen 1", "Brew Tea 1", "Drink 1");
// t1.do1 (); // Es ist ein Fehler beim Aufrufen aufgetreten
ListCommon2.do1 ("gekochtes Wasser 1");
var t2 = neuer listCommon2 ("Wasser kochen 2", "Tee 2", "trinken 2");
t2.do2 ("kochendes Wasser 2"); //
// listCommon2.do2 ("Wasser kochen 1"); // Es ist ein Fehler im Anruf aufgetreten
Nach dem Testen wurde festgestellt, dass die Methode, die keinen Prototyp verwendete, der statischen Methode der Klasse entspricht, sodass sie auf diese Weise aufgerufen werden kann.
Im Gegenteil, die Methode, die mit Prototypen verwendet wird, entspricht der Instanzmethode der Klasse und kann nicht nach neu verwendet werden. ListCommon2.do2 ("Wasser kochen 1"); Dies führt zu einem Fehler.
Schlussfolgerung: Die mit Prototyp definierte Methode entspricht der Instanzmethode einer Klasse und muss nach neu verwendet werden. Die Einschränkungen der Funktion, die in der Funktion aufgerufen werden können, ähneln auch den Einschränkungen der Instanzmethode einer Klasse.
Die Verwendung von Methoden ohne Verwendung von Prototypen entspricht statischen Methoden der Klasse. Sie können sie direkt ohne Neu verwenden. Die Einschränkungen von Funktionen, die in Funktionen aufgerufen werden können, ähneln auch den Einschränkungen statischer Methoden der Klasse.
Zum Beispiel kann dies nicht genannt werden;