有没有一种方法可以在ES6类上拥有内部方法
Is there a way to have internal methods on ES6 classes?
我目前在javascript项目中使用ALTJS,因此几乎只能使用ES6类。
我的问题是关于上述课程的。有没有办法拥有私有的内部方法?例如:
class something() {
constructor(){}
methodOne(){}
methodTwo(){}
}
不能从方法一内部访问方法二,反之亦然。在这种情况下,拥有内部效用函数的正确方法是什么。例如,一些完成计算的代码,应该使用多个方法,我不想重复多次(DRY)。
我知道有静态方法。然而,我不得不通过调用something.staticMethod来访问这些方法,这似乎很奇怪。在这种情况下,没有必要将该方法公开。
我在网上读了很多es6课程的文章,但似乎没有一篇能解决这个问题。
谢谢!
JavaScript对象总是"完全公开"的。如果你有权访问一个对象,你可以完全遍历它,(目前)没有办法限制它。
可以使用以下几种方法隐藏"私有"或"内部"功能或数据:
-
如果使用模块系统,则仅导出公共部分:
function priv() { //do something } export class TheClass { myMethod() { priv(); } }
-
您可以将代码封装在IIFE:中
const TheClass = (function() { function priv() { //do something } return class TheClass { myMethod() { priv(); } } })();
是的,您只是将"内部"方法放在导出的方法之外。
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();
}
相关文章:
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- JS提示-^'简明方法'在ES6中可用
- 使构造函数参数具有ES6类方法的特权
- 从构造函数es6调用静态方法
- 使用 Babel 转译器导入类并调用带有 ES6 模块的静态方法
- 什么'这是ES6中制作重复元素列表的等效方法
- 在不使用@syntax的情况下修饰ES6类方法
- ES6类:在超级方法中获取子类的正确名称
- 从常规ES6类方法中调用静态方法
- 使用ES5阵列方法和ES6生成器
- ES6类:在另一个函数中包装方法实现
- 在标准ES6类中添加getter方法有意义吗
- javascript ES6类/方法范围
- 在 ES6(量角器页面对象)中创建实例的正确方法
- ES6 类方法不是函数
- ES6:应用函数作为类方法
- 是否可以覆盖本机 Es6 承诺解析方法
- 作用域问题反应父子方法ES6
- React 中的哪种绑定上下文方法(ES6 类)更好
- 迭代范围的功能性方法(ES6/7)