Heim >Web-Frontend >js-Tutorial >Lösung für das Überladen von JS-Funktionen_Javascript-Kenntnisse

Lösung für das Überladen von JS-Funktionen_Javascript-Kenntnisse

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-05-16 16:48:371469Durchsuche

Bei der objektorientierten Programmierung unterstützen viele Sprachen die Funktionsüberladung, die je nach Anzahl und Art der von der Funktion übergebenen Parameter unterschiedliche Vorgänge ausführen kann. JS unterstützt dies jedoch nicht und erfordert, dass wir einige zusätzliche Schritte ausführen kleine Aktionen.
 
Im Funktionsausführungskontext von JS gibt es eine interessante Variable namens Argumente. Sie speichert alle Parameter, die bei der Ausführung der Funktion übergeben werden, in Form eines Arrays, auch wenn die Funktionsdefinition nicht so viele Formale definiert Parameter. Eine weitere Besonderheit besteht darin, dass die Argumentvariablen im Vergleich zum Array-Typ nur ein Längenattribut haben, wie Push, Pop usw. Es handelt sich lediglich um ein „Pseudo-Array“. das Längenattribut und speichert das Array, auf das mit dem Array-Accessor [] zugegriffen werden kann und das schreibgeschützt und nicht beschreibbar ist.

1. Überladung für unterschiedliche Anzahlen von Parametern
Hier sollte klar sein, verwenden Sie zur Beurteilung einfach das Längenattribut der Argumentfunktion.


Code kopieren Der Code lautet wie folgt:

2. Überladung verschiedener Parametertypen Für eine dynamisch typisierte Sprache wie JS verwässert die Willkürlichkeit von Variablendeklarationen die Bedeutung strenger Variablentypen in den Köpfen der Entwickler (PS: Das ist es basiert ebenfalls auf dem ECMA-System und AS hat den obligatorischen Typ der Variablendeklaration eingeführt. Viele unerwartete Fehler werden tatsächlich durch diese automatische Konvertierung von Variablentypen verursacht. Tatsächlich bietet JS eine sehr genaue Methode zur genauen Erkennung des Variablentyps. Die gebräuchlichsten sind die Methode typeof und das Konstruktorattribut.

1. typeof variable gibt den Variablentyp

zurück

Code kopieren Der Code lautet wie folgt:
temp = "say"; //string
temp = 1; //number
temp = undefiniert; //object
temp = []; /object
temp = true; //boolean
temp = function (){} //function
alert(typeof temp);
Durch den obigen Test können Sie sehen, dass Null, Object und Array Objekttypen zurückgeben, und die folgende Methode kann dieses Problem lösen.

2. Das Konstruktorattribut erkennt den Variablentyp
Jedes Objekt in JS verfügt über ein Konstruktorattribut, mit dem auf die Funktion verwiesen wird, die dieses Objekt erstellt. Der Variablentyp kann durch Beurteilung dieser Referenz ermittelt werden.

Code kopieren

Der Code lautet wie folgt:temp = "say"; temp.constructor ==String; //true temp= {};/true temp= []; /true

Durch den obigen Test ist es einfach, Variablen vom Typ Array und Objekt zu unterscheiden. Führen wir einen Test mit dem benutzerdefinierten Objekt durch, um zu sehen, was passiert.





Code kopieren

Der Code lautet wie folgt:

Dies kann zeigen, dass das Konstruktorattribut auch auf benutzerdefinierte Objekte anwendbar ist.

Nachdem wir die Anwendung der beiden oben genannten Methoden geklärt haben, kehren wir zur Simulation der Überladung von JS-Funktionen zurück. Das folgende Beispiel ist eine Überladung basierend auf Parametertypen.



Code kopieren

Der Code lautet wie folgt:


function talk(msg){
var t = typeof msg;
if(t=="string"){
warning("It's a string");
else if(t=="number"){
warning("It's a number"}
}
talk(10); //It's a string
talk("demo"); //Es ist eine Zahl


Anbei ist eine sehr clevere Funktion, die Parametertypen und -nummern streng erkennt:

// Überprüfen Sie streng eine Variablenliste basierend auf die Parameterliste Der Typ der
Funktion strict(types, args) {
//Stellen Sie sicher, dass die Anzahl der Parameter mit dem Typkern
übereinstimmt, wenn (types.length != args.length) {
//Wenn die Länge nicht übereinstimmt, wird eine Ausnahme ausgelöst
                                                       ; i & lt;
//Verwendung der oben genannten Methode
function doFunction(id,name){
//Ermitteln Sie die Anzahl und Art der Parameter
strict([Number,String],arguments);
..
}


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