我想将两个函数名称传递给具有JSON的函数,但无法使其工作。我对这些东西很满意。
这是我的功能。 myFunc应该调用传递给它的两个函数(myBefore和myAfter)。
function myFunc(obj) {
var func = $.parseJSON(obj);
if (typeof func[before] === "function") func[before]();
// do some stuff
if (typeof func[after] === "function") func[after]();
}
function myBefore() {
alert("before");
}
function myAfter() {
alert("after");
}
以下是我如何调用myFunc
myFunc({"before": "myBefore", "after" :"myAfter"});
答案 0 :(得分:0)
这个怎么样? window["yourfunctionname"]();
var FunctionName = func[before];
if (typeof(window[FunctionName]) === "function")
{
window[FunctionName]();
}
OR
function myFunc(obj) {
var func = $.parseJSON(obj);
if (func[before] === "myBefore") { before();}
// do some stuff
if (func[after] === "myAfter") { after(); }
}
答案 1 :(得分:0)
像...一样的东西。
function myFunc(obj) {
var func = $.parseJSON(obj);
if (typeof func[before] === "function") func.before();
// do some stuff
if (typeof func[after] === "function") func.after();
}
答案 2 :(得分:0)
myFunc应该调用传递给它的2个函数
您需要检查func["before"]
,根据您的实施func[before]
是字符串而非功能
function myFunc(func) {
//You don't need to parse. As its already a JSON
//var func = $.parseJSON(obj);
if (typeof func["before"] === "function")
func["before"]();
// do some stuff
if (typeof func["after"] === "function")
func["after"]();
}
var myBefore = function () {
alert("before");
}
var myAfter = function () {
alert("after");
}
myFunc({
"before": myBefore,
"after": myAfter
});
答案 3 :(得分:0)
你不是在说一个功能。你真正在做的是
("myBefore")();
这是一个错误。
如果myBefore和myAfter函数在全局范围内,您可以使用window [“stringName”]。
function myFunc(obj) {
//var func = $.parseJSON(obj); //if it is object being passed in than this is an error
var func = obj;
window[func[before]]();
window[func[after]]();
}
答案 4 :(得分:0)
由于函数是全局声明的,因此可以从全局对象(窗口)中获取它们。
function myFunc(obj) {
if (typeof window[obj.before] === "function") window[obj.before]();
// do some stuff
if (typeof window[obj.after] === "function") window[obj.after]();
}
function myBefore() {
alert("before");
}
function myAfter() {
alert("after");
}
myFunc({"before": "myBefore", "after" :"myAfter"});
JS小提琴: http://jsfiddle.net/wvPgA/