请问json配置中如何配置Function对象?
在做一个配置的时候需要把回调函数也配置到json中不知道如何转化,请高手指点!
尝试在json里只传回调函数名 用eval去转换 不知是否可以
var callBack = function(){
console.log("这是本地的回调函数");
}
var jsonTmp = {
"callback":"callBack",
"str":"strrrrrr"
}
var callFun = eval(jsonTmp.callback);
//调用
callFun();//打印 “这是本地的回调函数”
JSON 格式支持数据类型:Number, String, Boolean, Array, Object, (Value, Whitespace, null)。JSON 不支持 Function 类型,虽然 javascript 中 Function Object 继承自 Object,也不代表他们能直接转化。至少,据我所知,函数的函数体是不能转化为其它数据类型的。
或许,就只能先转化为字符串,再用new Function()
创建为函数。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
写成字符串加参数,仿照JSONP式调用
代码的话,大概是这样
根据评论我再说一下吧,可以把函数写到 json 配置中,举个不恰当的例子:
问题是为什么要这么做?一般不会把 函数主体写到JSON里面,一般会这么写:
对,这个某个node下json的依赖,它这里面的每一项都是一个JS函数(确切的说是包),主体逻辑都是写在包里面
很简洁,不会搞乱逻辑。
我这边也简述一下nodejs 是怎么通过json 来寻找配置的JS文件吧。
首先node会解析当前路径下的package.json 文件, 从devDependencies 里面获取其配置(依赖)的函数(包)。
然后node在通过寻径函数(具体细节不说)找到包所在的位置,读取该路径下的package.json文件的 main属性,这个
main就是函数(包)的文件主体,你在里面怎么写都可以。
而不推荐直接把主体写在json里面的理由也简单
1) 多且乱
2) 一旦出现两个函数之间有嵌套关系,就非常难弄。
等等。。。
这个问题一开始我也是想错方向了,后来想想题主说的和nodejs的package.json 做的事情实在是太像了。不知道
题主是不是就是想要这个?