使用函数声明作为参数
问题描述:
我试图创建一个存根定义,下面的代码可以使用通过:使用函数声明作为参数
func.calc({
'divide': function(num1, num2) {
// do something
},
'add': function(num1, num2, num3) {
// do something
}
});
到目前为止,我已经遇到麻烦参数传递给第二个参数中的函数。这是我一直在努力做的事情:
var func = {
calc: function(operationsArray) {
if (div) {
operationsArray[0](args); /* get args */
}
else (add) {
operationsArray[1](args); /* get args */
}
}
}
是否有可能得到整个函数定义(带参数和执行),当它被作为参数在第一个片段方式通?
答
您声明func.temp
作为接受Array
作为第二个参数的方法。另一方面,你用Object
作为第二个参数来调用该方法。
JavaScript规范告诉我们,场顺序不保证:
4.3.3对象 一个目的是对象的类型的成员。它是一个无序的属性集合,每个属性都包含一个原始值,对象或函数。存储在对象属性中的函数称为方法。
这意味着你不应该使用位置索引来访问in_func
& in_func2
(即[0])。
你应该调用的函数,像这样的数组:
func.temp(mainArg, [
function(arg1, arg2) {
// do something
},
function(arg1, arg2, arg3) {
// do something
}
]);
OR,实现该功能,以便它使用明确的名字:
var func = {
temp: function(arg1, func_obj) {
// do something with arg1
if (trigger1) {
func_obj.in_func(/* get params */);
}
else (trigger2) {
func_obj.in_func2(/* get params */);
}
}
}
我不明白你要根据你提供的伪代码来做什么。 –
我不知道你在这里问什么。您的示例代码太抽象,无法理解,并且无论如何都有语法错误。尝试一个真正的[mcve] – Quentin
重新编辑:点击“运行代码片段”。你有基本的语法错误! – Quentin