Unten ist eine vereinfachte Version meiner App, der folgende Code funktioniert wie vorgesehen. Ich kann 4 Protokolle in meiner Konsole mit den Argumenten sehen, die ich an SayHello
übergab.Shortcut zu einem Konstruktor Aufruf
var App = {};
(function(that){
that.SayHello = function(){
console.log(arguments);
return {
doSomething: function(){
console.log('done');
}
};
};
var obj = {
t: new that.SayHello('a', 1),
r: new that.SayHello('b', 2),
b: new that.SayHello('c', 3),
l: new that.SayHello('d', 4)
};
}(App));
Ausgabe: Ich versuche, eine "Abkürzung" zu new that.SayHello
wie folgt zu erstellen:
var Greet = function(){
return new that.SayHello;
},
obj = {
t: Greet('a', 1),
r: Greet('b', 2),
b: Greet('c', 3),
l: Greet('d', 4)
};
Die Konsolenprotokolle 4 leere Arrays. Das bedeutet, dass die arguments
nicht bestanden wurde.
Ich versuchte auch return new that.SayHello.apply(this, arguments);
und return new that.SayHello.call(this, arguments);
.
Wie kann ich ALLE Greet
's arguments
zu that.SayHello
übergeben?
Wissen, dass ich that.SayHello
mit new that.SayHello
initialisieren oder sonst meinen Code bricht.
ich für eine allgemeine Lösung für eine beliebige Anzahl von arguments
suchen, ich will nicht das arguments
eines nach dem anderen zu übergeben. Dieser Code ist auch verfügbar unter jsfiddle.
Genau so! Vielen Dank! – Pierre
@Pierre Es gab einen Hauptfehler in meiner Antwort, ich habe es aktualisiert. – freakish