Я сталкивался с этим при работе с Google Firebase Authentication и 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';
}
}
Я даже пытался заглянуть в сеттер и геттер, поскольку они также могут распознать, получил ли foo.bar
или foo.bar()
вызван, но установщик не принимает возвращенное значение.
Как я могу сделать то, что делает команда Firebase? Как они справились с этой магией c?