Ich habe js verwendet, um selbstgerechte Methoden für Objekte zu schreiben. Als ich auf ein Problem stieß, habe ich eine Methode wie folgt definiert:
Der Code lautet wie folgt:
function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCommon2.do1=function(first) { // this.First(); alert("first do"+first); } ListCommon2.prototype.do2=function(first) { // this.First(); alert("first do"+first); }
Was ist der Unterschied zwischen den beiden Methoden? Was bedeutet es, Prototypen zu verwenden oder nicht?
Testcode:
var t1= new ListCommon2("烧水1","泡茶1","喝1"); // t1.do1();//调用出错 ListCommon2.do1("烧水1"); var t2=new ListCommon2("烧水2","泡茶2","喝2"); t2.do2("烧水2");// // ListCommon2.do2("烧水1");//调用出错
Nach dem Testen wurde festgestellt, dass die Methode ohne Verwendung des Prototyps der statischen-Methode der Klasse entspricht es kann wie folgt aufgerufen werden: ListCommon2. do1("Kochendes Wasser 1");, wenn es so aufgerufen wird, tritt ein Fehler auf:
Im Gegenteil, die Methode, die den Prototyp verwendet, ist Äquivalent zur Instanzmethode der Klasse, die erst verwendet werden kann, wenn new zulässig ist. do2("Wasser kochen 1"); Dies führt zu einem Fehler
Schlussfolgerung: Die mit dem Prototyp definierte Methode ist äquivalent zu Die Instanzmethode der Klasse, die verwendet werden muss, nachdem neue Funktionen in Funktionen aufgerufen werden können. Die Einschränkungen ähneln auch den Einschränkungen für die Instanzmethoden der Klasse
Verwendungsmethoden die nicht mit dem Prototyp definiert sind, entsprechen der statischen Methode der Klasse. Sie können direkt ohne neue verwendet werden, und die Einschränkungen für die Funktionen, die in der Funktion aufgerufen werden können, gelten ebenfalls. Die Einschränkungen für statische Methoden von Klassen sind etwas ähnlich zu
kann beispielsweise this.First();