2016-09-22 12 views
-4

非常に明確です。私は、関数自体を配列に追加させる関数の実行が必要です。私は、関数内から配列に関数を転送する必要があります。関数のすべての内容を関数自体から配列に転送して複製するにはどうすればよいですか?

例:

emptyArray = []  //All functions will be sent here. 

var transferFunction = function() { 
    alert("I want to be sent to emptyArray from 
    within the function itself. How do I do that? 
    I don't want to use emptyArray[0] = transferFunction; 
    What I want, is for transferFunction to replicate 
    itself, and be sent to the empty array. 
    Can anyone answer how to do this?"); 
} 
+2

'emptyArray.push(伝達関数)' – adeneo

+0

adeneo、あなたはまだ最初の配列を呼んでいます。 "emptyArray"をまったく使用せずにこれを行うにはどのようなコードを使用できますか? – ironSteel

+3

配列を参照することなく、または配列を持つことなく、配列内に関数を配置する方法はありません。 – adeneo

答えて

1

このようなことをお探しですか?

var transferFunction = (function(arr){ 
 
    var _id = 10; 
 
    var _fn = function(name) { console.log("Hi " + name); }; 
 
    return (arr[_id] = _fn); 
 
})(window.emptyArray || (window.emptyArray = [])); 
 

 
// should log "Hi Sue" 
 
transferFunction("Sue"); 
 

 
// should log "Hi Sam" 
 
window.emptyArray[10]("Sam");

+0

はい、それは私がやろうとしていることに近いです。私はそれを使ってテストしました:myFunctions [0]();私はあなたの機能を実行することができました。今、myFunctions配列の中の特定のインデックスに各関数をどのように入れることができるか知っていますか? – ironSteel

+0

これを見越して、** push **を使うのではなく、インデックスを設定するコードを更新しました。オリジナルの投稿のものを反映するように変数を更新しました。 :-) – JonSG

1

@adeneoは、上記の彼のコメントで言うように:

var emptyArray = [] 
var transferFunction = function() { 
    emptyArray.push(transferFunction) 
} 

動作します。

より大きい質問はなぜあなたがこれをしたいですか。

EDIT

あなたは、機能を保持するJavaScriptオブジェクトを使用するために、 "中央集権" オブジェクトが必要な場合:

var functions = { 
    func1: function() {}, 
    func2: function() {}, 
    ... 
} 

そして、オブジェクトのプロパティにアクセスすることで機能を呼び出します

functions.func1() 

配列を必要とする唯一の理由は、i forループ内の関数を呼び出す。

+0

私がこれをやりたい理由は、emptyArray []に1つずつ行くのではなく、emptyArray []]の中に入れなければならない50個の関数があると仮定して、emptyArray [0] = transferFunctionというように、 50は、各関数の内部でそうするためのコマンドを使ってemptyArray []に機能します。 – ironSteel

+0

あなたはむしろ1つのことをするために50の関数を変更していますか? – vlaz

+2

50個の機能が追加されたら、配列で何をしようとしているのか尋ねてもいいですか?私はこの種のパターンから恩恵を受ける問題に遭遇したことは一度もなく、もっと学ぶことに興味があります。 – bmceldowney

関連する問題