あるオブジェクトから別のオブジェクトに関数をコピーしています。問題は、彼らがソースオブジェクトに匿名であるが、彼らはターゲットオブジェクトに名前を持っていることです。関数の匿名化/オブジェクト内の名前の削除
var o1 = {
a: function() {
alert("Hello World");
},
b: 123,
c: "Some string"
}
var o2 = {};
for (var key in o1) {
if ("function" == typeof o1[key]) {
o2[key] = o1[key];
}
}
console.log(o2.a); //output: function o1.a()
2つの関数は、いくつかの方法で接続しているように見えるが、これはありません少なくとも刺激的です。また、Firefox Developer Editionは、コンソールにログインして名前をクリックすると、その機能がどこから来たのかを知ることができます。それに何らかの悪影響が及ぶかどうかは分かりません。
したがって、関数をコピーして匿名にすることができれば、それは素晴らしいことです!
これは、関数の内部でさらに行きます。さて、上記のコードを関数 'foo'の中にラップすると、コンソール出力は' function foo/o1.a() 'になります。 – jaySon
ChromeとFirefoxでテストしました。どちらのバージョンでも、別のオブジェクトに入れたときに名前を関数に追加していません。そして、それはあなたがそれをコピーしていないのでソース関数がどこにあったかを常に知るでしょう、あなたは参照を作成しています。それにかかわらず、なぜあなたはそれを匿名にしていますか? –
copy by reference ... – epascarello