ein Szenario vorstellen, wie so:in Aufruf ein zusätzliches Argument übergeben an eine Funktion
var obj = {
renderSubGame: renderComponent
}
und renderSubGame mit einem Argument aufgerufen this.subGameInfo etwa so:
renderSubGame(this.subGameInfo)
damit dieses Argument wäre übergeben an renderComponent (was selbst ist eine Sache, die ich will)
aber renderComponent erfordert auch ein Argument für seinen Parameter "Komponente", die in diesem Fall möchte ich übergeben Argument zu "subGame" sein:
var obj = {
renderSubGame: renderComponent('subGame')
}
aber dann verliere ich den Parameter, der an renderSubGame übergeben wird.
Also wie bekomme ich sowohl 'subGame' (via obj) als auch thisSubGameInfo (via Funktionsaufruf) als Argumente für renderComponent?
Genauer gesagt ist dies das allgemeine Szenario in meinem Code:
Datei/requirejs Modul: subGame.js
mit Code, so dass subGame.render() ruft eine geschlossene Funktion renderSubGame(), die schließlich view.renderSubGame (thisSpielinfo) aufruft.
Datei/requirejs Modul: view.js
Dies ist, was das Modul kehrt zur Ansicht:
return: {
renderSubGame: renderComponent('subGame')
}
und das ist, was ich renderComponent zu grob sein wollen:
function renderComponent(component) {
var renderMethods = _(render).getObjectMethodNames();
if (_(renderMethods).contains(component)) {
render[component](*INITIAL_ARGS_FROM_SUBGAME.JS*);
} else {
throw 'Error: component method render.' + component + '() not
recognized as a method of render.';
}
}
(Render ist ein anderes Modul, das ein Objekt von Methoden zurückgibt, von denen eines SubGame ist)
Also mein Problem ist, dass das Argument (ThisSGameInfo) RenderComponent nicht erreichen.
Ich habe versucht, Lösungen mit .apply() oder .call(), aber sie haben nicht so funktioniert, wie ich will.
Wenn ich RenderSubGame: renderComponent verwenden würde, die die Argumente von renderSubGame enthalten würde, also wie kann ich 'SubGame' zu diesen Argumenten hinzufügen?
Oder alternativ, wie kann ich:
renderSubGame: renderComponent('subGame')
die Argumente
renderSubGame (this.subGameInfo)
zusätzlich zu 'Teilspiel' aufzunehmen?
Warum machst du nicht 'var obj = {renderSubGame: renderComponent, Komponente: 'subGame'}' und dann beide in 'subGame.render()'? –
Weil ich irgendwann andere Komponenten verwenden möchte. Zum Beispiel möchte ich vielleicht renderComponent ('line'), die, nach Ihrem Vorschlag, würde erfordern: 'var obj = {renderSubGame: renderComponent, renderLine: renderComponent, Komponente: 'subGame', Komponente: 'line'} 'das ist offensichtlich nicht gültig – mchach24
' var obj = {renderSubGame: renderKomponente, renderSubGameArguments: ['subGame'], renderLine: renderKomponente, renderLineArguments: ['line']} 'oder noch besser (meiner Meinung nach)' var obj = {renderSubGame: {target: renderComponent, args: ['subGame']}}, renderLine: {target: renderComponent, args: ['line']}} ' –