私は現在、より大きなオブジェクトを構築しており、デバッグ/検査/値/結果/リターンの方がより迅速で具体的になる必要があります。javascriptオブジェクトメソッド名を取得するには?
は今、私は、次のことについて考え:
var myObject = {
whatever: null,
whereever: null,
debug: false,
someFunction: function(arg) {
// General - would output *all* logs for all object functions.
// if (true === myObject.debug)
// console.log('FunctionNameHere', arg);
// More specific - would output *only* the log for the currently targeted function
if ('FunctionName' === myObject.debug)
console.log('FunctionNameHere', arg);
},
};
これは私が単に一つの関数名としてオブジェクトVAR debug
を定義し、この部分のみをログに記録することが可能になります。
唯一の問題は、FunctionName
/someFunction
をどのように取得すればよいですか?
Sidenotes:
console.log(arguments.callee);
は私に全体の機能のソースを提供します。console.log(arguments.callee.name);
が空です。console.log(arguments.callee.toString());
戻り、私はオブジェクト全体のログに見てみるならば、私はprototype.name="Empty"
と、このようなを参照してくださいconsole.log(arguments.caller);
戻りundefined
を空にします。だから直接オブジェクトからそれを得るチャンスはありません。
ありがとうございます!
したがって、一般的に言えば、デバッグが 'true'の場合、' myObject'関数のいずれかが実行されると、関数名+引数を持つコンソールをログに記録しますか? – kubetz
@dzejkej正確ではありません。関数名に 'debug'をセットすると、等しくfnという名前の' log'だけがトリガされます。これは、私が各機能にデバッグを構築し、必要な/指定されたときにそれを起動することを可能にする。 – kaiser
私の回答には、ハードコーディングなしで要件に合ったコードが含まれています。それは少し進んでいますが、うまくいけば、あなたはこの興味深い言語を研究するよう動機づけるでしょう:P。 – kubetz