我在使用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团队正在做的事情?他们是如何解决这个魔术的?
答案 0 :(得分:1)
伙计,您必须注意,与类的Firebase样式等效的对象应如下所示,只是您做错了。
class foo {
constructor() {
this.bar.bar = 'Bar!';
// instead of this.bar = 'Bar!';
}
bar() {
return 'Function bar() was called';
}
}
但是。如果必须将“ .bar”设置为正常值,然后将.bar
作为函数使用,则可以使用getter / setter。只是对我来说没有多大意义。
class foo {
constructor() {
this.bar = 'Bar!';
}
barFunc() {
'Function bar() was called';
}
get bar() {
return this.barFunc;
}
set bar(value) {
this.barValue = value;
}
}
答案 1 :(得分:0)
可以为功能分配其他属性。
function auth () {
return ‘banana’
}
auth.Auth = ‘wookie’;
console.log(auth()); // banana
console.log(auth.Auth); // wookie