【发布时间】:2020-04-13 03:44:59
【问题描述】:
我在使用 Google Firebase 身份验证和 Firebase Firestore 时遇到了这个问题。可以访问同名类的变量和函数,例如:
//To authenticate:
firebase.auth().signInWithEmailAndPassword()
//Or to access a value
firebase.auth.Auth.Persistence.SESSION
注意他们如何同时使用firebase.auth 和firebase.auth()。当我尝试查看是否可以这样做时,它会引发错误:
class foo {
public bar;
constructor() {
this.bar = 'Bar!'; //Expecting 'Bar!' when run foo.bar()
}
//However, it throws an error here, as bar was already defined
bar() {
return 'Function bar() was called';
}
}
我什至尝试研究 setter 和 getter,因为它们也可以识别被调用的是 foo.bar 还是 foo.bar(),但 setter 不接受返回值。
我该如何做 Firebase 团队正在做的事情?他们是如何发挥这种魔力的?
【问题讨论】:
-
函数是一个对象,所以你可以给它们分配属性和方法。
-
啊。那讲得通。但是在类内部函数的上下文中,这可能吗?
-
是的。就像下面的 hackape 所做的那样。
标签: javascript firebase class oop getter-setter