gpt4 book ai didi

javascript - 扩展 JavaScript 通用模块(UMD 文件)中定义的类的正确方法是什么

转载 作者:行者123 更新时间:2023-12-03 11:22:15 25 4
gpt4 key购买 nike

我第一次尝试了 log4javascript 的自定义日志“appender” 。它可以工作,但它被困在原始代码中。我想将我的扩展保存在一个单独的文件中,但我不太了解其余代码,不知道如何提取它。

我知道 log4javascript 在某种程度上尊重 UMD 模式,但据我所知。

(虽然不应该是...

(function(root, factory){})(this, function{})...

...而不是...

(function(factory, root){})(function{})

... ???*)

(function(factory, root) {
if (typeof define == "function" && define.amd) {
define(factory);
}
else if (typeof module != "undefined" && typeof exports == "object") {
module.exports = factory();
}
else {
root.log4javascript = factory();
}
})(function() {

:
Here be dragons . . .
:


/* -- - this code works from here, but not if I - -- */
/* -- - try to move it out to a file of its own - -- */
function MyAppender() {}
MyAppender.prototype = new Appender();
MyAppender.prototype.layout = new SimpleLayout();
MyAppender.prototype.append = function(loggingEvent) {
alert( this.getLayout().formatWithException(loggingEvent) );
};
MyAppender.prototype.toString = function() {
return "MyAppender";
};
log4javascript.MyAppender = MyAppender;
/* -- - - - - - - - - - - - -- */



:
. . . and sea monsters
:


return log4javascript;
}, this);

如何在单独的文件中对 Appender 进行子类化?

最佳答案

自从几个小时前发帖以来,我一直在阅读更多有关 UMD、AMD、requireJS 等的内容。

看来主要问题是 namespace 纯度。

弄清楚这一点后,我所要做的就是解决 namespace 问题。事实证明这非常简单:它就在代码中!呃! :

log4javascript.MyAppender = MyAppender;

而不是 . 。 。

MyAppender.prototype = new Appender();
MyAppender.prototype.layout = new SimpleLayout();

...我必须做...

MyAppender.prototype = new log4javascript.Appender();
MyAppender.prototype.layout = new log4javascript.SimpleLayout();

关于javascript - 扩展 JavaScript 通用模块(UMD 文件)中定义的类的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27050631/

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