私はおそらくコードを介してこれを説明するのが最もよいでしょう。難しいjavascriptの質問
var object1 = function(){
//do something
}
var object2 = function(){
//do something else
}
var objects = {
'o1' : object1,
'o2' : object2
};
var actions = [];
function addAction(actionName){
var object = objects[actionName];
actions.push(function(){ new object(); });
}
ので、このコードは、配列に保存され、ユーザー入力に基づいて実行時に決定されたアクションのシーケンスを保存します。私はこのような何かを得ました。
addAction("o1");
addAction("o2");
私はちょうど行うことをシーケンス再生する場合:
for(i in actions){
actions[i]();
}
をして、このタイプのオブジェクト1とオブジェクト2の2つの匿名オブジェクトを作成します。
今、私は何とかactions []配列をシリアル化する必要がありますが、スコープを保持するためにはその中の各関数が必要です。私は、文字列に関数をキャストした場合、私は得る:
"function(){ new object(); }"
と、私はこの文字列をevalする場合は、「オブジェクト」は未定義になります。あなたはどうしますか?