我目前正在我的javascript项目中使用ALTJS,所以我几乎坚持使用ES6类。
我的问题是关于上述课程。有没有办法让私人内部方法?例如:
class something() {
constructor(){}
methodOne(){}
methodTwo(){}
}
您无法从方法一和副方式中访问方法二。在这种情况下,具有内部效用函数的正确方法是什么。例如,一些完成计算的代码,多个方法应该使用,我不想多次重复(DRY)。
我知道有静态方法。但是,通过调用something.staticMethod然后我必须访问它们似乎很奇怪。在这种情况下,不需要公开该方法。
我在线阅读了很多es6课程文章,似乎没有人能解决这个问题。
谢谢!
答案 0 :(得分:1)
是的,你只是把“内部”方法放在出口的东西之外。
function privateMethod() {
//Do some private stuff.
}
export default somefunction() {
//Do some stuff
privateMethod();
}
或者如果您希望将辅助方法放在单独的文件中并在需要时导入它们,您可以这样做:
import { methodOne, methodTwo } from "./helpers.js";
export default somefunction() {
//Do some stuff
methodOne();
}
答案 1 :(得分:1)
JavaScript对象始终"完全暴露"。如果您有权访问某个对象,则可以完全遍历该对象,并且(目前)无法限制该对象。
可以做什么是隐藏"私人"或"内部"使用多种方法的功能或数据:
如果使用模块系统,则只导出公共部分:
function priv() {
//do something
}
export class TheClass {
myMethod() { priv(); }
}
您可以将代码包装在IIFE中:
const TheClass = (function() {
function priv() {
//do something
}
return class TheClass {
myMethod() { priv(); }
}
})();