繁体   English   中英

如何在ES6类中声明本地函数?

[英]How to declare local function inside ES6 class?

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

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类中创建一个本地函数吗?

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

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

您可以使用符号:

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

    this[localFunc] = function() {
      // I am private
    };
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM