如何在JavaScript中调用类方法

时间:2017-08-15 17:44:38

标签: javascript javascript-objects

我目前正在学习ES6。当我玩新功能时,我一度陷入困境。如何调用类方法。

所以,让我们说我在一个文件中有一个类,如下所示:

class Auth {
    checkUserSignedIn() {
       //check user signed in
    }

    signupUser(account) {
       //signup user
    }

    loginUser(account) {
        //login user
    }

    getCurentUser() {
        //Current User
    }
}

module.exports = Auth;

然后在其他文件中,让我们说一个我想称之为控制器的控制器。

const Auth = require('./auth');
class Controller {
    signupUserUsingEmailAndPass(user) {
        Auth.signupUser(account);

    }

    loginUserUsingEmailAndPass(account) {
            Auth.loginUser(account);
    }

    isUserSignedIn() {
      checkUserSignedIn();
    }
}

module.exports = Controller;

但这根本不起作用。我想有些东西我不能正确理解。有什么建议/意见吗?

3 个答案:

答案 0 :(得分:0)

Javascript课程的工作方式与您习惯的模块模式(看起来似乎)完全不同。导出`Auth时,您正在导出类定义但仍需要实例化它。

let auth = new Auth()
auth.signupUserUsingEmailAndPass() // or any other function you define

在javascript中,当您想要使用数据或某种状态填充类时,类很有用。如果您不想要或不需要,那么您可以使用模块。

答案 1 :(得分:0)

类中定义的方法需要该类的实例,即某处new Auth

您的控制器应该定义

class Controller {

  constructor(auth) {
    this.auth = auth;
  }
}

require('myclass')上的这种方法允许您注入Auth类的不同实现。

如果您不希望这些方法的Auth实例,请将它们声明为静态。有关here

的更多信息

答案 2 :(得分:0)

您需要实施Auth

const authorization = new Auth();

可能在包含Auth类的文件中,只需导出实例。

export const authorization = new Auth();

或者,如果您希望此方法在外面可用。您可以制作方法static。只需在方法创建过程中在方法名称前添加static关键字。

您可以阅读有关静态方法here

的更多信息