我知道,除非导出,否则所有内容在node.js中都是私有的。
我找不到导出整个类的其他方法,但我的目标是使从类导入到并实例化的地方无法访问privateMethod()
。
#!/usr/bin/env node
'use strict'
module.exports = class DBConnector {
constructor() {}
publicMethod() {}
privateMethod() {}
}
是否有解决方案,还是必须将其公开?
提前感谢您的帮助。
Java本身没有私有方法的概念。因此,如果您在类上定义方法,则任何引用该类实例的代码都可以调用该方法。方法定义没有Java专有的内容。
就是说,有许多变通办法可以使您的代码在私有对象上运行,而该对象不能从模块外部调用。这是几个例子:
'use strict'
// declare privateMethod that can only be called from within this module
function privateMethod(obj, args) {
// private code here
}
module.exports = class DBConnector {
constructor() {}
publicMethod() {
// call code for private method
privateMethod(this, ...);
}
}
这是真正的私有方法,因为该方法的代码不在原型上,因此无法从该模块外部发现或调用。当然,您必须稍微不同地调用它,因为它不是“真正的”方法。但这是因为所有“真实”方法都是可以从外部发现和调用的。