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