2016-03-22 2 views
0

Не возражайте, что это функциональное программирование, то, что мне сложно понять, что происходит, когда вы используете функцию в качестве первого аргумента в методе bind?Связывание функции с этим с помощью функции.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(); 
+0

Функция также является просто объектом ... – deceze

+0

Да, это я понимаю - но как это станет? - это newValue, то свойство этого объекта? как интерпретируется оператор return? – Bildsoe

+0

Я предполагаю, что 'monadWithValue.bind' не' Function.prototype.bind', потому что bind означает что-то особенное с монадами. – FakeRainBrigand

ответ

2

функция также просто объект ...

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

Вам доведется быть в состоянии вызова этот объект с foo(), но кроме этого он ведет себя точно так же, как и любой другой объект. Вы можете связать this с номером foo без проблем.

Смежные вопросы