我可以传递对特定对象的实例函数的引用吗?

时间:2017-06-14 12:42:25

标签: javascript lodash

是否可以像在Java中那样执行相同的操作并将函数引用传递给javascript中特定对象的函数?

请考虑以下代码:

_.every(aS, function (value) {
    return exp.test(value);
});

我想这样做:

_.every(aS, exp.test);

即。导致调用该特定test的{​​{1}}函数。

这可以在javascript中使用吗?

<小时/> 答:可以,请查看chapter 2 of You Don't Know JS: this & Object Prototypes部分硬装订

2 个答案:

答案 0 :(得分:3)

是的,但为了确保this参考在exp.text实施中正常运行,您应该bind

_.every(aS, exp.test.bind(exp));

对于某些功能,这可能没有必要(当他们不使用this引用时),但它不会受到伤害。

有关this的详细信息,请参阅How does the this keyword work

答案 1 :(得分:1)

是的,但您必须对this在JS中的工作方式有一些了解。

基本上,你必须像这样将函数绑定到对象。

_.every(aS, exp.test.bind(exp))

基本上,当你使用bind时,它确保无论调用函数在哪里,this总是绑定到传递给函数的对象。如果您没有调用bind,那么this将被绑定到环境全局对象,浏览器中的window