以下は、のアプリケーションの簡略化されたバージョンです。次のコードは意図したとおりに動作します。私はSayHello
に渡された引数で私のコンソールに4つのログを見ることができます。コンストラクタコールへのショートカット
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));
問題:私は次のようにnew that.SayHello
に "ショートカット" を作成しようとしています:
var Greet = function(){
return new that.SayHello;
},
obj = {
t: Greet('a', 1),
r: Greet('b', 2),
b: Greet('c', 3),
l: Greet('d', 4)
};
コンソールログ4つの空の配列。これは、arguments
が失敗したことを意味します。
return new that.SayHello.apply(this, arguments);
とreturn new that.SayHello.call(this, arguments);
も試しました。
Greet
のarguments
をthat.SayHello
に渡すにはどうすればよいですか?
new that.SayHello
を使用してthat.SayHello
を初期化する必要があることがわかっている場合は、コードが改行されます。
arguments
の任意の数の一般的な解決策を探していますが、arguments
を1つずつ渡したくありません。
このコードはjsfiddleでも利用できます。
正確にこのように!ありがとう! – Pierre
@Pierre私の答えに大きなバグが1つありました。私はそれを更新しました。 – freakish