gpt4 book ai didi

javascript - 将多个相似的函数附加到原型(prototype)

转载 作者:行者123 更新时间:2023-11-28 19:12:39 24 4
gpt4 key购买 nike

我想避免我的一个项目的冗余代码,该项目是 simple logger 。该记录器需要 *.alert、*.notice 等函数,我还决定为它们分配别名(.alert = .al 等)。

这会导致多个相似的函数,仅一个数字和名称不同。

Module.protoype.emergency = Module.prototype.em = function () {
this.applyLogLevel(' + (i+1) + ', arguments);
}

为了减少代码库的冗余,我创建了这个“创建者函数”:

// create logging functions
var prototypeNames = [
['emergency', 'emer', 'mrgc', 'em'],
['alert', 'aler', 'alrt', 'al'],
['critical', 'crit', 'crtc', 'cr'],
['error', 'erro', 'rror', 'er'],
['warning', 'warn', 'wrng', 'wa'],
['notice', 'noti', 'notc', 'no'],
['info', 'in'],
['debug', 'debu', 'dbug', 'de']
];

for (var i = 0; i < prototypeNames.length; i++) {
for (var j = 0; j < prototypeNames[i].length; j++) {
Module.prototype[prototypeNames[i][j]] = Module.prototype.Namespace.prototype[prototypeNames[i][j]] = new Function ('this.applyLogLevel(' + (i+1) + ', arguments);');
}
}

现在我的 Javascript linter 告诉我 new Function()eval() 的一种形式。有没有其他/更好的方法来解决这个问题?

最佳答案

你也许可以替换

new Function ('this.applyLogLevel(' + (i+1) + ', arguments);');

(function(level) {
return function() {
this.applyLogLevel(level, arguments);
}
})(i+1);

关于javascript - 将多个相似的函数附加到原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30486512/

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