Wie bekomme ich 'diesen' Wert der Anruferfunktion?

8

Wenn ich eine Funktion wie diese habe:

%Vor%

dann wird die test -Instanz von bar protokolliert.

Damit dies jedoch funktioniert, muss ich this in der Funktion bar.prototype.func übergeben. Ich habe mich gefragt, ob es möglich ist, den gleichen this -Wert zu erhalten, ohne dass this übergibt.

Ich habe versucht, arguments.callee.caller zu verwenden, aber dies liefert die Prototyp-Funktion selbst und nicht den this -Wert innerhalb der Prototyp-Funktion.

Ist es möglich, die test Instanz von bar zu protokollieren, indem nur foo() in der Prototyp-Funktion aufgerufen wird?

    
pimvdb 13.06.2011, 14:46
quelle

4 Antworten

3

Wenn die Frage lautet "ohne dies (auf irgendeine Weise) zu bestehen", dann lautet die Antwort no

-Wert kann jedoch mit alternativen Methoden übergeben werden. Zum Beispiel mit global var (in der Bar-Klasse) oder Session oder Cookies.

%Vor%     
Dmitriy Naumov 13.06.2011, 14:54
quelle
1

Ich denke, Aufruf von foo im Kontext von bar sollte funktionieren:

%Vor%     
KooiInc 13.06.2011 14:51
quelle
1

Was ist damit?

%Vor%

Oder das:

%Vor%     
Samuel Nakombi 20.01.2015 19:42
quelle
0

Sie können dies tun, ohne die externe Funktion zu ändern, aber Sie müssen die Art ändern, wie Sie sie aufrufen.

Sie können den Kontext des Aufrufers nicht abrufen, aber Sie können die Eigenschaft this für eine Funktion festlegen, die Sie mit der Methode bewerben oder Anruf . Eine Erläuterung zu this finden Sie diese Referenz .

%Vor%

Normalerweise, wenn this verwendet wird, ist es in einem objektorientierten Kontext. Wenn versucht wird, eine Methode eines Objekts mit einer anderen aufzurufen, deutet dies auf ein schlechtes Design hin. Erklären Sie ein bisschen mehr, was Sie für anwendungsfreundlichere Entwurfsmuster erreichen möchten.

Ein Beispiel für ein JavaScript-OOP-Paradigma finden Sie in my antworte hier .

    
nus 24.07.2013 14:23
quelle

Tags und Links