Javascript 为什么我们需要在React Native中绑定函数?

Javascript 为什么我们需要在React Native中绑定函数?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我正在做一个项目。在一些教程中,我看到了如下绑定方法: constructor(props){ super(props); this.my_function = this.my_function.bind(this); } 我的问题是,如果我可以使用this.My_function访问构造函数中的函数,那么为什么我需要再次绑定它?我有Java和Python的背景,这可能就是为什么我对这种类型的方法绑定感到困惑的原因。 注意:我知道如果我不在React Native/React JS中绑定方法,

我正在做一个项目。在一些教程中,我看到了如下绑定方法:

constructor(props){
super(props);
this.my_function = this.my_function.bind(this);
}
我的问题是,如果我可以使用this.My_function访问构造函数中的函数,那么为什么我需要再次绑定它?我有Java和Python的背景,这可能就是为什么我对这种类型的方法绑定感到困惑的原因。
注意:我知道如果我不在React Native/React JS中绑定方法,我的方法将无法正常工作。我只是想知道为什么我需要这个额外的绑定。

看看这个链接,了解JS闭包是如何工作的


您需要绑定函数,以便它能够访问类中的状态和其他变量,而不仅仅是执行时传递的参数。

那么您需要将
绑定到类的方法。这样您就可以在方法体中访问obj的副本

如果这样调用特殊参数
this
,则该参数将在方法体中自动可用

obj.my_函数()

在这种情况下,obj被传递给
这个
参数,您可以使用
obj.propertyName
访问它的所有方法和属性

但在您的情况下,您的类方法
my_函数
很可能会在某个事件的结果中被调用。您需要用这个示例绑定类的一个实例

希望能有帮助


为了更好地理解,我强烈建议您仔细阅读。在前面的回答中也提到过。

我想这都是关于javascript中的作用域和上下文的。深入理解javascript中作用域的工作原理可以让您构建更强大的应用程序和更干净的代码

基本上,bind允许您将函数粘贴到给定的上下文。它允许您访问存储在特定范围内的值,通常在构造函数范围内

您也可以阅读这篇文章,其中有一篇很棒的文章介绍了bind方法

另请参阅本讨论,也许它对您有用:


您将在react中使用es6类,这样类将拥有自己的方法和变量。所有这些方法都将在
this
中可用,如果一个方法想要访问另一个类中无法访问
this
的方法来访问
this
我们需要
将(this)
绑定到该方法

如果您是懒惰的,那么您可以使用arrow函数,该函数将自动绑定此

class helloWorld extends Component {
     foo = () => {
        console.log(this);
     }
}

关于这一点,有很多教程,搜索javascript上下文绑定很好的答案和您提供的很好的参考-阅读本文后,我了解到类函数中的默认“this”是指函数本身,绑定函数将其覆盖到对象