是否可以像在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部分硬装订。
答案 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
。