Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请简单解释我需要使用bind()的时间/原因_Javascript_Reactjs - Fatal编程技术网

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()
的值不变