在Nodejs中支持不同类的同名函数吗?

nodejs可以在同一个名字的不同类中有两个函数吗? 如果不是那么为什么不呢? 否则代码中出现错误。

以下是例子;

var admins = require('./routes/admins'); var users = require('./routes/users'); 

两个单身类

 var users = function users(){ this.foo = foo = function(bar){ ... } } users.getInstance = getInstance = function(){ if(this.instance == null){ this.instance = new users(); } return this.instance; } module.exports = users.getInstance(); 

admin类也是类似的,这两个类也具有相同的函数名称。

现在当foo被调用时,无论如何都会调用用户类。 如果我更改了要求命令,则调用pipe理类的foo

就像在你的问题中的字面意思,我不明白为什么会发生这种情况。 但是,你正在渗透到全球的范围,这就是你可能最终与重复。

 users.getInstance = getInstance = function(){ ... 

首先,请注意中间的getInstance没有用var作用域,所以它被分配到全局作用域。 虽然这不会造成直接的问题,但您仍然在污染全球范围,这是不好的。

真正的问题出现,如果你只是做:

 module.exports = getInstance(); 

无论你是否已经用var范围getInstance ,你在全局上下文中调用它,这意味着在这个函数内部, this == global 。 这意味着函数第一次运行,基本上是这样做的:

 global.instance = new users(); 

…当你的第二个文件运行时,它看到已经有一个global.instance ,只是返回它。

考虑使用'use strict'; 所以这些types的错误被抓住了。


最后 – 你为什么要做所有这些getInstance体操? 他们完全没有必要。 你的用户文件应该是这样的:

 exports.foo = function(bar) { ... }; 

由于函数名称相同,代码按顺序执行,所以第二个类中的函数将覆盖第一个类。

所以这个函数将被从任何一个文件放在第二位。