Javascript 请简单解释我需要使用bind()的时间/原因
我什么时候做Javascript 请简单解释我需要使用bind()的时间/原因,javascript,reactjs,Javascript,Reactjs,我什么时候做 而不是,这并不是真正的React-只是的标准JS行为。你应该查阅关于它的教程,但简而言之,在不等式的第一面,任何使用this的方法都将评估为obj;在第二种情况下,这个可以计算任何值;例如,如果在全局范围内调用它,窗口 bind的第一个参数为this.functionName的实例设置this对象。如果您没有这样明确地设置它,那么它的内部this将在第二种情况下查找原型链,以查找obj(或不)。每当您创建一个新函数(箭头函数除外)时,您都会创建它自己的this实例。因此,在它内部
而不是
,这并不是真正的React-只是的标准JS行为。你应该查阅关于它的教程,但简而言之,在不等式的第一面,任何使用this
的方法都将评估为obj
;在第二种情况下,这个
可以计算任何值;例如,如果在全局范围内调用它,窗口
bind
的第一个参数为this.functionName
的实例设置this
对象。如果您没有这样明确地设置它,那么它的内部this
将在第二种情况下查找原型链,以查找obj
(或不)。每当您创建一个新函数(箭头函数除外)时,您都会创建它自己的this
实例。因此,在它内部,您不能使用父级的this
Bind创建一个新函数,该函数将此
设置为传递给Bind()
的第一个参数
因此,如果这里有一个简单的实验来理解这一点:
制作2个Js文件。在第一个文件中,定义一个具有某个值的变量并打印它。在第二个文件中,更改该变量的值并再次打印
文件1:
let x = 0; // variable declared here
console.log(x);
文件2:
x = 2; // no variable x declared just value change
console.log(x);
现在,当您在HTML页面中包含这两个文件(文件1在文件2之前)时,输出为:
0
2
结论:您可以在一个页面上从另一个文件访问一个文件中的变量。这些变量对于页面来说是通用的
现在考虑在ReaTJS类或方法组件中定义一些东西。因为React只是Js库,所以您可以在没有类对象的情况下访问类内部的函数!这将破坏抽象和封装的目的。因此,
bind
关键字所做的是,它告诉我们这个函数只绑定到这个类,不能在它之外访问。这就是为什么将所有内容绑定到组件是很重要的。否则,如果不绑定两个使用相同函数名的组件,它们可能会混淆实际调用哪个函数
因此,第一次绑定它们时,请使用bind
关键字,然后在不使用bind
的情况下使用它。或者,您可以简单地创建箭头函数,该函数将自动将它们绑定到组件。因此,调用函数时确定this
的值。使用bind()
调用新函数时,您正在将this
的值设置为bind
的参数,例如myFunction.bind(argument)
<代码>参数
然后在函数(myFunction
)中变为this
在箭头函数成为js规范的一部分之前,它被广泛使用。它仍然有值,但不太常见,因为箭头函数在调用时不声明this
的值,因此不需要.bind()
。此
的值不变