2
関数を動的に宣言するのが難しいです。私はこの質問をより一般的なものにしたかったのですが、実際に私がこの場合に何をしているのかわからず、私のコードに戻ってきました。Javascript:関数を動的に宣言する正しい方法
ログレベル(以下のコードに見られるように)を含むjsonオブジェクトがあり、各ログレベルに対して関数を作成する必要があります。たとえば、log.info( 'my log message');
log.info()を呼び出すときに発生する問題は、これらの関数にはすべてlog.error()が呼び出されていることがわかっているため、「情報」が呼び出されたことがわかりません同じ動的コードと私はこれを呼び出す関数を検出する方法を知らない。
私はそれが理にかなっていると思います。これまでNode.js用にこれを書いていますので、これまでのコードは以下の通りです。私は、問題の機能がどこにあるのか、どこにログレベルを表示するのかというコメントを持っています。
exports.logger = function() {
// Syslog severity levels
var levels = {
emerg: { "code": 0 },
alert: { "code": 1 },
crit: { "code": 2 },
error: { "code": 3 },
warning: { "code": 4 },
notice: { "code": 5 },
info: { "code": 6 },
debug: { "code": 7 }
};
// Loop through each severity level
for (var severity in levels) {
// Ensure we're not iterating over a prototype
if (levels.hasOwnProperty(severity)) {
// Declare function
this[severity] = function(message) {
// Here's the problem: I have no idea what called this function.
console.log('Log severity level here:', message);
};
}
}
}
これは私がそれを呼び出す方法です:
var logger = require('log.js');
var log = new (logger.logger)(
// settings removed for example
);
log.info('test');
私の正気を保存するための本当にありがとうございましたが、時間のためにこれに貼り付けられた:) –