2
我无法动态地声明函数。我试图问这个问题,所以它更通用,但我真的不知道我在做什么,并不断回到我的代码。我有一个json对象,其中包含日志级别(如下面的代码所示),并且对于每个日志级别,我需要创建一个函数以便我可以调用,例如:log.info('my log message');Javascript:动态声明函数的正确方法
我遇到的问题是当我打电话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');
非常感谢你救了我的理智,被困在这几个小时:) – 2012-02-22 18:22:28