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?
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%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 .
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 .
Tags und Links javascript scope function this