Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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函数参数_Javascript_Ecmascript 6 - Fatal编程技术网

正确绑定到Javascript函数参数

正确绑定到Javascript函数参数,javascript,ecmascript-6,Javascript,Ecmascript 6,我得到了一个接收两个参数的方法: function func(param1, param2){... 我得到了一个React组件,它接收一个函数作为参数,它有关于第二个参数的信息,我想把第一个参数设置为常量 我正在做的是: let myFuncToPass = func.bind("const value", null); . . . <ComponentName funcParam = { (res) => myFuncToPass(res) } . 让myFuncToPas

我得到了一个接收两个参数的方法:

function func(param1, param2){...
我得到了一个React组件,它接收一个函数作为参数,它有关于第二个参数的信息,我想把第一个参数设置为常量

我正在做的是:

let myFuncToPass = func.bind("const value", null);
.
.
.
<ComponentName funcParam = { (res) => myFuncToPass(res) } 
.
让myFuncToPass=func.bind(“常量值”,null);
.
.
.
myFuncToPass(res)}
.
我希望在调用回调时,调用参数时,第一个参数是“const value”,第二个参数是
res
。发生的情况是,第二个参数的res按其应该的方式接收,但第一个参数为null,而不是“const value”


我做错了什么?

我想你应该这样做:

let myFuncToPass = func.bind(this, "const value");
[编辑]第一个参数不一定是
this
,它完全取决于您的用例——如果
func
从未在内部使用
this
,那么这可能根本不重要,或者您可能更愿意将
null
传递进来——您需要自己考虑这个问题

第一个参数绑定调用结果函数时此的含义,第二个参数定义传递给函数的第一个参数

[编辑]

作为一个实验:

function x() {
  console.log(this);
  console.log(arguments);
}

x();

x.bind({a:2}, "first argument")("second argument");
查看文档:

Bind函数的第一个参数是this

要使用部分应用程序,您应该使用babel或Ramdajs之类的函数库,或者这样编写

func.bind('irrelevant', 'const value')

第一个参数绑定此,然后跟随其余参数:@deceze I实际上正好跟随了该参数。。我看到的例子是:var addThirtySeven=addArguments.bind(null,37);然后就抄下来了。为什么它在示例中起作用,但在我的例子中不起作用?嗯,不……您正在将
“const value”
设置为
this
参数,而
null
用于
param1
…对于“独立”函数,
this
应该是
null
,而不是
this
。也许,但这不是独立函数,他在React中这样做,考虑到他还没有发布其余的代码,他极有可能会对国家或道具或其他东西做些什么。当然,这取决于我们在这里没有看到的细节;但是典型的模式是
foo.bar.bind(foo)
,因此
bar
不会丢失其上下文。将一个独立的代码<代码>栏/代码>绑定到<代码> FoO 它不属于IS,而完全不可能是我跳过的第一个结论。我已经做了一个编辑警告他考虑他绑定到代码>这个< /代码>“你必须使用巴别塔”……?