Javascript 将方法传递给以后的评估

Javascript 将方法传递给以后的评估,javascript,jquery,Javascript,Jquery,如果我将一个函数作为参数传递,并且该函数是jQuery方法,那么以后调用传递的函数是否仍能正确地设置此?我原以为会,但稍后调用该函数会导致this=Window 示例代码: var $input = $('input').first(); var evaluators = []; evaluators.push($input.val); _.forEach(evaluators, function(valueMethod) { return valueMethod() //retu

如果我将一个函数作为参数传递,并且该函数是jQuery方法,那么以后调用传递的函数是否仍能正确地设置此?我原以为会,但稍后调用该函数会导致
this=Window

示例代码:

var $input = $('input').first();

var evaluators = [];

evaluators.push($input.val);

_.forEach(evaluators, function(valueMethod) {
    return valueMethod() //returns undefined always since this = window
}).
尝试使用:

bind()方法创建一个新函数,在调用该函数时,将其this关键字设置为提供的值,并在调用新函数时在任何提供的参数之前提供给定的参数序列


值得注意的是,
bind
is(例如IE8和FF3(或更早版本))。

请参阅,了解如何设置函数的上下文或

您的意思是
$input.val
?这是我希望必须做的。这是否意味着,如果直接从对象实例调用函数(如
obj.prototypeMethod()
),JS只会正确设置
这个
。基本上,
input.val
所指的是函数本身,没有上下文(例如原型方法)。在进行调用时传递上下文。
bind
所做的是创建一个新函数,该函数围绕原始函数,定义作为参数传递的上下文。
evaluators.push($input.val.bind($input));