Heim >Web-Frontend >js-Tutorial >Der Unterschied zwischen der Verwendung von Prototypen und der Nichtverwendung von Prototypen beim Definieren von Funktionen in der js-Klasse

Der Unterschied zwischen der Verwendung von Prototypen und der Nichtverwendung von Prototypen beim Definieren von Funktionen in der js-Klasse

PHP中文网
PHP中文网Original
2017-03-29 15:30:341182Durchsuche

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();

nicht aufgerufen werden.
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