Hier ist ein einfaches Beispiel.
Ich möchte sicherstellen, dass this
innerhalb von obj
obj
ist, damit ich a
von b
aufrufen kann. Ich verwende obj
in einer anderen Funktion, und wenn ich einen Haltepunkt innerhalb von b
setze, finde ich heraus, dass this
das Fenster ist, nicht obj
.
var obj = {
a: function() { return 2 },
b: function() { return 5+ this.a() },
}
$('#hey').text(obj.b());
obj
ist in einer Datei definiert, die von vielen anderen Klassen verwendet wird, daher würde es keinen Sinn ergeben, eine der Methoden auf der Site zu definieren, die obj
verwenden.
Aus @Kamils Antwort zu urteilen, scheint es, dass ich a
als Parameter an b
übergeben muss. Wie folgt:
var user = obj.b(obj.a);
var obj = {
a: function() { return 2 },
b: function(func) { return 5 + func() },
}
BEARBEITEN Das Folgende funktioniert, ist aber unübersichtlich. Gibt es eine elegantere Lösung?
Ich habe am Ende dies geändert
startingSMA = this.simple_moving_average(startingSMA, period, accessor)
zu folgendem:
startingSMA = (function(startingSMA, period, accessor) {
return this.simple_moving_average(startingSMA, period, accessor)
}).apply(Statistics, [startingSMA, period, accessor]);