Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 使用function.bind将函数绑定到此_Javascript_Function_Bind - Fatal编程技术网

Javascript 使用function.bind将函数绑定到此

Javascript 使用function.bind将函数绑定到此,javascript,function,bind,Javascript,Function,Bind,不要介意这是函数式编程,我很难理解的是,当您在bind方法中使用函数作为第一个参数时会发生什么 monadWithValue.bind(callback); 通常,它通过提供一个对象来分配上下文,该对象将成为它所指的对象 var monadWithValue = Monad( value ); function callback(value) { var newValue = calculate…new…value…from…value; return Monad( newV

不要介意这是函数式编程,我很难理解的是,当您在bind方法中使用函数作为第一个参数时会发生什么

monadWithValue.bind(callback);
通常,它通过提供一个对象来分配上下文,该对象将成为它所指的对象

var monadWithValue = Monad( value );

function callback(value) {
    var newValue = calculate…new…value…from…value;
    return Monad( newValue );
}

var monadWithNewValue = monadWithValue.bind(callback);
通常我会做一些类似的事情:

function add() { 
  return this.a + this.b;
}

var context = {
  a:10,
  b:20
};

add.bind(context);
add();

函数也只是一个对象

var foo = function () { };
foo.bar = 'baz';

您可以使用
foo()
调用此对象,但除此之外,它的行为与任何其他对象完全相同。您可以毫无问题地将
绑定到
foo

函数也只是一个对象

var foo = function () { };
foo.bar = 'baz';

您可以使用
foo()
调用此对象,但除此之外,它的行为与任何其他对象完全相同。您可以毫无问题地将
this
绑定到
foo

函数也只是一个对象……是的,我理解这一点-但它将如何变成这一点newValue是这个对象的一个属性吗?return语句是如何解释的?我猜
monadWithValue.bind
不是
Function.prototype.bind
,因为bind在monad中有特殊的含义。
newValue
这件事无关。假设
monadWithValue
是一个函数,那么
monadWithValue.bind(callback)
使它成为这样,当您调用
monadWithValue()
时,
这个
monadWithValue
中指的是
回调
。仅此而已。没有更多,也没有更少。@deceze-那么你同意monadWithValue.bind在本例中不是Function.prototype.bind吗?函数也只是一个对象……是的,我理解-但它怎么会变成这个呢?-newValue是这个对象的一个属性吗?return语句是如何解释的?我猜
monadWithValue.bind
不是
Function.prototype.bind
,因为bind在monad中有特殊的含义。
newValue
这件事无关。假设
monadWithValue
是一个函数,那么
monadWithValue.bind(callback)
使它成为这样,当您调用
monadWithValue()
时,
这个
monadWithValue
中指的是
回调
。仅此而已。不多不少。@deceze-那么您同意monadWithValue.bind在本例中不是Function.prototype.bind吗?