Javascript react native和firebase-firebase函数作为参考

Javascript react native和firebase-firebase函数作为参考,javascript,firebase,react-native,firebase-realtime-database,Javascript,Firebase,React Native,Firebase Realtime Database,有人能解释一下这段代码的工作原理吗: this.firebaseRef.on('value', (snapshot) => {//...}); 这不是: const foo = this.firebaseRef.on; foo('value', (snapshot) => {//...}); ? 在react native devtools调试器中,它抛出一个错误:无法读取未定义的属性“Y” 这很有趣,因为当我设置断点并检查它时 foo === this.firebaseRef.

有人能解释一下这段代码的工作原理吗:

this.firebaseRef.on('value', (snapshot) => {//...});
这不是:

const foo = this.firebaseRef.on;
foo('value', (snapshot) => {//...});
?

在react native devtools调试器中,它抛出一个错误:
无法读取未定义的属性“Y”

这很有趣,因为当我设置断点并检查它时

foo === this.firebaseRef.on

它给我真实的感觉
typeof foo
是一个函数。我不明白。同样的情况也会发生在
once

上,不同之处在于调用
on
时,该
值将是什么。当函数作为对象的成员调用时,
绑定到对象。()当函数值作为独立变量调用时,
绑定到全局对象,或在严格模式下绑定到
未定义的
。()

要解决此问题,必须将函数设置为正确的
此值

const foo = this.firebaseRef.on.bind(this.firebaseRef);
foo('value', (snapshot) => {
  // ...
});

不同之处在于调用
on
时该
值将是什么。当函数作为对象的成员调用时,
绑定到对象。()当函数值作为独立变量调用时,
绑定到全局对象,或在严格模式下绑定到
未定义的
。()

要解决此问题,必须将函数设置为正确的
此值

const foo = this.firebaseRef.on.bind(this.firebaseRef);
foo('value', (snapshot) => {
  // ...
});