Methode in einer anderen Methode in Javascript aufrufen?

8

Ich habe einen JavaScript-Namespace sagen

%Vor%

Wenn ich jetzt einen solchen Code ausführe, gibt es TypeError: this.C ist keine Funktion. Kann mir jemand sagen, warum es so ist? Ich weiß, dass es etwas mit lexikalischem Scoping zu tun hat, aber ich kann das nicht verstehen.

    
Ashish Jain 07.07.2009, 14:11
quelle

4 Antworten

5

Ich denke, das Problem ist, dass, wenn this.C() innerhalb der Funktion von B ausgeführt wird, this sich auf das Objekt bezieht, das B enthält, also das Objekt A . (Dies setzt voraus, dass B() im Kontext von A aufgerufen wird)

Das Problem ist, C existiert nicht für das Objekt A , da es in B definiert ist. Wenn Sie eine lokale Funktion C() in B aufrufen wollen, verwenden Sie einfach C() .

BEARBEITEN: Außerdem bin ich mir nicht sicher, was du gepostet hast, ist gültiges JavaScript. Insbesondere sollte B auf diese Weise definiert werden, da Sie die object: property-Syntax nicht innerhalb einer Funktion verwenden können.

%Vor%     
Peter 07.07.2009, 14:23
quelle
22

Sie müssen vorsichtig sein, wenn Sie this verwenden, um etwas in Javascript zu identifizieren, da sich bei jeder Änderung des Bereichs "this" ändert.

Das Zuweisen des 'this' Verweises zu seiner eigenen Variable hilft, dies zu umgehen.

%Vor%     
Hugoware 07.07.2009 14:28
quelle
4
___ qstntxt ___

Ich habe einen JavaScript-Namespace sagen

%Vor%

Wenn ich jetzt einen solchen Code ausführe, gibt es TypeError: this.C ist keine Funktion. Kann mir jemand sagen, warum es so ist? Ich weiß, dass es etwas mit lexikalischem Scoping zu tun hat, aber ich kann das nicht verstehen.

    
___ answer1092662 ___

Sie müssen vorsichtig sein, wenn Sie this verwenden, um etwas in Javascript zu identifizieren, da sich bei jeder Änderung des Bereichs "this" ändert.

Das Zuweisen des 'this' Verweises zu seiner eigenen Variable hilft, dies zu umgehen.

%Vor%     
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ answer18772281 ___

Lösung zum Aufrufen von Methoden von einer anderen Methode. (Im Wesentlichen muss der Zeiger "this" einer Variablen zugewiesen werden und die neue Variable stattdessen verwendet werden.)

%Vor%

Dieses Beispiel zeigt, wie man eine Methode innerhalb einer anderen Methode oder von außen über eine Instanz der Funktion aufrufen kann.

    
___ tag123methods ___ Eine Methode (oft als Funktion, Routine oder Prozedur bezeichnet) ist Code, der eine Aufgabe ausführt und einer Klasse oder einem Objekt zugeordnet ist. ___ answer092654 ___

Ich bin wirklich überrascht, dass Ihr Code Ihnen in der Zeile "C:" keinen Fehler gibt.

Wie auch immer, Ihre Syntax zum Definieren einer Funktion ist nicht korrekt. Definieren Sie es mit dem Schlüsselwort var. Beachten Sie auch, dass ich die 'Schließung' erstellt habe, damit die Funktion C auf 'diese' zugreifen kann. Siehe den folgenden Code:

%Vor%

Wenn Sie C diesem 'Objekt' zuweisen möchten, können Sie auch Folgendes tun:

%Vor%     
___ qstnhdr ___ Methode in einer anderen Methode in Javascript aufrufen? ___ answer1092633 ___

Ich denke, das Problem ist, dass, wenn %code% innerhalb der Funktion von %code% ausgeführt wird, %code% sich auf das Objekt bezieht, das %code% enthält, also das Objekt %code% . (Dies setzt voraus, dass %code% im Kontext von %code% aufgerufen wird)

Das Problem ist, %code% existiert nicht für das Objekt %code% , da es in %code% definiert ist. Wenn Sie eine lokale Funktion %code% in %code% aufrufen wollen, verwenden Sie einfach %code% .

BEARBEITEN: Außerdem bin ich mir nicht sicher, was du gepostet hast, ist gültiges JavaScript. Insbesondere sollte %code% auf diese Weise definiert werden, da Sie die object: property-Syntax nicht innerhalb einer Funktion verwenden können.

%Vor%     
___
SolutionYogi 07.07.2009 14:27
quelle
0

Lösung zum Aufrufen von Methoden von einer anderen Methode. (Im Wesentlichen muss der Zeiger "this" einer Variablen zugewiesen werden und die neue Variable stattdessen verwendet werden.)

%Vor%

Dieses Beispiel zeigt, wie man eine Methode innerhalb einer anderen Methode oder von außen über eine Instanz der Funktion aufrufen kann.

    
Rex 12.09.2013 18:57
quelle

Tags und Links