我正在研究React Native项目。在一些教程中我看到绑定一个这样的方法:
constructor(props){
super(props);
this.my_function = this.my_function.bind(this);
}
我的问题是,如果我可以使用this.my_function
在构造函数中访问该函数,那么为什么我需要再次绑定它?我有Java和Python背景,可能就是为什么我对这种类型的方法绑定感到困惑。
注意:我知道如果我不在React Native / React JS中绑定方法,我的方法就无法正常工作。我只是想知道为什么我需要这个额外的绑定。
答案 0 :(得分:4)
看一下这个链接,了解JS闭包的工作原理
http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/
您需要绑定函数,以便它可以访问类中的状态和其他变量,而不仅仅是执行时传递的参数。
答案 1 :(得分:1)
你需要将this
绑定到类的方法。这样您就可以在方法体中访问obj的副本。
如果像这样调用特殊参数this
,它将自动在方法体中可用。
obj.my_function();
在这种情况下,obj被传递给this
参数,您可以使用obj.propertyName
访问它的所有方法和属性。
但是在你的情况下,你的类方法my_function
很可能会因某事件的事件被调用。您需要使用此示例绑定类的实例。
希望它有所帮助。
我强烈建议您仔细阅读resource以便更好地理解。在前面的答案中也提到过。
答案 2 :(得分:1)
恕我直言,所有关于javascript中的范围和上下文。深入理解javascript中的作用域如何使您能够构建更强大的应用程序和更清晰的代码。
基本上,bind允许您将函数粘贴到给定的上下文中。它允许您访问存储在特定Scope中的值,通常在ReactJs构造函数范围内。
你也可以阅读,这是一篇很好的文章传递审查绑定方法。
http://reactkungfu.com/2015/07/why-and-how-to-bind-methods-in-your-react-component-classes/
另见本讨论,也许对您有用:
答案 3 :(得分:0)
你将在反应中使用es6类,因此类将拥有自己的方法和变量。所有这些方法都可以在this
中使用,并且如果一个方法想要访问另一个无法访问this
的类方法来访问this
,我们需要bind(this)
那个方法。
如果你很懒,那么你可以使用自动绑定this
的箭头功能。
class helloWorld extends Component {
foo = () => {
console.log(this);
}
}