gpt4 book ai didi

Javascript:动态声明函数的正确方法

转载 作者:搜寻专家 更新时间:2023-11-01 00:26:40 25 4
gpt4 key购买 nike

我无法理解动态声明函数。我试图问这个问题,所以它更通用,但我真的不知道我在这种情况下在做什么,并不断回到我的代码。

我有一个包含日志级别的 json 对象(如下面的代码所示),对于每个日志级别,我需要创建一个函数以便调用,例如:log.info('my log message');

我遇到的问题是,当我调用 log.info() 时,我无法弄清楚是否调用了“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');

最佳答案

Object.keys(levels).forEach(function (severity) {
this[severity] = function (message) {
console.log(severity, message);
});
}, this);

关于Javascript:动态声明函数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com