JavaScript 関数に属性または値を追加することは許容されますか?
例:
var f = 1;
function foo (param) {
f++;
}
var fooFunc = foo;
fooFunc.dummy = f;
console.log('fooFunc: ' + fooFunc);
console.log('fooFunc.dummy: ' + fooFunc.dummy);
上記の例では、関数 ( foo
) を作成し、それを新しい変数 ( ) に割り当ててから、属性を にfooFunc
追加します。dummy
fooFunc
この例を実行すると、最初に関数のテキストが出力され、次に期待値 (1
この場合) が出力されます。dummy
関数を印刷するとき、値の表示はありません。
fooFunc: function foo(param) {
f++;
}
fooFunc.dummy: 1
JsFiddle はこちら - ブラウザの JavaScript コンソールを開いてログ メッセージを表示します: http://jsfiddle.net/nwinkler/BwvLf/
なぜこれが機能するのですか?属性はどこにdummy
保存されていますか?関数をログに記録したときに出力されないのはなぜですか?
最後に、これが機能する場合でも、これを使用することは良い考え (または許容される慣行) ですか? これについてオープンエンドの議論を開始したくはありませんが、これの使用方法が文書化されているかどうか、または JavaScript コーディングガイドラインでこれを思いとどまらせる人々がいるかどうかを確認してください。