从函数返回函数而不调用返回函数
可以这样做吗?从函数返回函数而不调用返回函数
我有以下几点:
populate.func = function(node, state) {
return (new function(data) { /* stuff*/ });
}
但是,调用populate.func不约而同地呼吁这两个所谓的功能和返回功能,不管我用正则调用约定或调用方法。我想能够调用populate.func并只是返回函数作为值使用,而不实际运行它...
只是这样做
populate.func = function(node, state) {
return (function(data) { /* stuff*/ });
}
您的代码实例化使用函数作为构造函数创建一个新的对象,但你想回到你的函数的引用来代替,所以只需删除新的关键字。
这似乎工作。在留下反馈意见之前,稍等一下并试验一下。为什么新的操作符会导致它调用这两个函数? – 2012-08-07 06:12:11
因为你执行了函数来实例化一个对象,使用该函数作为构造函数。 – 2012-08-07 06:13:37
这并不回答这个问题。 – 2012-08-07 06:19:35
我甚至不知道你的代码实际上在做什么,但我认为你想要的是:
populate.func = function(node, state) {
return function(data) { /* stuff*/ };
}
@RobF添加新的没有做任何差异,你通过引用返回一个对象,由您的构造函数实例化,但不是功能它自己。 – 2012-08-07 06:08:59
'return function ...'将返回一个函数的引用,而不执行它。 – Vatev 2012-08-07 06:11:19
为什么'新'?它应该没有它。 我的意思是,说'infunc =函数(数据){/ *东西* /};'你这样做: '返回infunc;' – Prasanth 2012-08-07 06:03:12
你想返回函数作为一个字符串? – 2012-08-07 06:03:15
新的,因为我读到这是一个技巧,通过引用传递一个函数,并在它作为参数传递函数时,而不是当它被调用时传递变量。我认为它是这样做的,因为只要一个指针保持在子函数中,父代也不能被垃圾收集,也不能被它的调用堆栈收集。或者其他的东西。 – 2012-08-07 06:09:03