为标题道歉,但我不确定如何说出这一点。
在普通模块中,您有以下格式:
var SomeClass = function() {
...
};
module.exports = SomeClass;
您可以将其简写为:
module.exports = function() {
...
};
如果您需要在其自身内部使用“类”名称(例如,实例化其自身的新对象),则第二种表示法存在问题。使用第一个例子,这很容易......
var SomeClass = function() {
...
function doSomething() {
var x = new SomeClass();
}
...
};
module.exports = SomeClass;
这可能使用第二种表示法吗?我知道我不能使用'this',因为那是一个实例变量,我也不能使用任何形式的模块。
module.exports = function() {
...
function doSomething() {
var x = new ??????
}
...
};
我纯粹是从美学和统一的角度来看。
任何帮助表示赞赏。 感谢
答案 0 :(得分:1)
可以以您描述的形式执行此操作。从理论上讲,在该范围内,SomeClass
和module.exports
之间没有区别:两者都是变量,你给它们两个相同的值。
因此,如果你愿意,你可以拥有这样的东西(虽然看起来很奇怪):
module.exports = function() {
// ...
function doSomething() {
var x = new module.exports();
}
// ...
};