不使用变量名的JavaScript节点/模块

时间:2014-11-17 08:02:39

标签: javascript node.js module

为标题道歉,但我不确定如何说出这一点。

在普通模块中,您有以下格式:

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 ??????
}
...
};

我纯粹是从美学和统一的角度来看。

任何帮助表示赞赏。 感谢

1 个答案:

答案 0 :(得分:1)

可以以您描述的形式执行此操作。从理论上讲,在该范围内,SomeClassmodule.exports之间没有区别:两者都是变量,你给它们两个相同的值。

因此,如果你愿意,你可以拥有这样的东西(虽然看起来很奇怪):

module.exports = function() { 
// ...
function doSomething() {
   var x = new module.exports();
}
// ...
};