javascript - 如何在 ES6 类中声明局部函数?

标签 javascript class ecmascript-6

我有一个只能在类内部使用的函数,不希望在类外访问它。

class Auth {
  /*@ngInject*/
  constructor($http, $cookies, $q, User) {
    this.$http = $http;
    this.$cookies = $cookies;
    this.$q = $q;
    this.User = User;

    localFunc(); // Need to create this function, and need it to be accessible only inside this class
  }
}

到目前为止我所做的是在类外声明函数

function localFunc() {
  return 'foo';
}
class Auth {
  ...
}

但是,这并不好,因为它污染了全局函数,除非我将它包装在 IIFE 中。那么,我是否可以通过某种方式在 ES6 类中创建本地函数?

最佳答案

不,无法在 中声明局部函数。您当然可以声明(静态)辅助方法并使用下划线前缀将它们标记为“私有(private)”,但这可能不是您想要的。您始终可以在方法内部声明局部函数。

但是如果您多次需要它,那么唯一的办法就是将它放在 class 旁边。如果您正在编写脚本,那么像往常一样需要 IEFE。如果您正在编写 ES6 模块(这是首选解决方案),那么隐私是微不足道的:只是不要export 函数。

关于javascript - 如何在 ES6 类中声明局部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33760162/

相关文章:

java - 如何使用另一个类中对象的特定变量?

Java-如何从同一个包中的类获取私有(private)数据

javascript - ES6 过滤器 - 如何返回对象而不是数组?

javascript - 陷入实现闭包功能的困境 (javascript)

javascript - CSS 通过 SVG 定位单个路径 -> 使用标签

c++ - 从基类构造函数构造派生类对象

javascript - javascript中 "click"事件的嵌套函数调用

JavaScript:动态生成的对象键

javascript - jQuery keypress() 处理程序 : managing flow of events

javascript - 如何在不复制粘贴代码和编辑变量的情况下执行此操作 2 次?