タイトルの井戸が私の質問を説明しているのかどうかはわかりませんが、ここで説明します。 私はいくつかの処理を行い、別の関数f2を引数として使う関数(f1)を持っています。実際、f2はf1に「注入」されているため、f2の「シグネチャ」は異なる場合があります(たとえば、f2にはいくつかのパラメータがあるかもしれません)。私は疑問に思っています可能な限り一般的なコードを持っている最善の方法は何ですか?Javascript:関数をパラメータとして呼び出す関数
ここではコードを説明しますが、それは確かにそれをよりよく説明します。 トラバースは私のf1関数であり、オブジェクト内のすべてのキーをスキャンします。各キーについて、それは何かを行います - その活動は「注入された」f2によって実行されます。以下のサンプルコードでは、私の関数f2がキー名を別のキー名(ここでは "lastname"と "theLastname")で置き換えています。現在書かれている方法は非常に一般的ではないので、キー名がf1に書かれているものを書かなければならない。また、パラメータなしでログオンするだけのキー名が必要な単純なf2関数があるとしますか?私が持つことができるように
// f1 function
function traverse(o,doF) {
for (var i in o) {
doF('key : ' + i + ', value: ' + o[i]);
if (o[i] !== null && typeof(o[i])==="object") {
//going on step down in the object tree!!
traverse(o[i],doF);
} else {
doF(o);
}
}
return o;
};
::私はしたいのですがどのような
// f2 function
function replaceKey(object,keyname,newKeyname) {
if (object.hasOwnProperty(keyname)){
object[newKeyname] = object[keyname];
delete data[keyname];
}
return object;
};
// f1 function
function traverse(o,doF) {
for (var i in o) {
doF('key : ' + i + ', value: ' + o[i]);
if (o[i] !== null && typeof(o[i])==="object") {
//going on step down in the object tree!!
traverse(o[i],doF);
} else {
doF(o,"lastname","theLastname"); // this is dependant on f2 signature - would like to make it more generic
}
}
return o;
};
traverse(userList,replaceKey);
のようなものです
traverse(userList,replaceKey);
traverse(userList,log);
のF1独立しを作るためにそれを書くためにどのように任意のアイデアf2 "署名"?
ありがとうございました!
あなたがしようとしていることがわかりません。 'doF'(つまり' replaceKey')とは1つのパラメータだけで動作するはずのものは何ですか? – Blorgbeard
'データを削除する[keyname];' - それは 'delete object [keyname];でなければなりません。 –