web.script库(JS、VBS解释器), JavaScript用aar函数重封装方法
By
admin
at 2017-12-02 • 0人收藏 • 1731人看过
//web.script库(JS、VBS解释器) import console; import web.script //创建一个支脚本虚拟机 var vm = web.script( ) //添加一个接口非常简单,直接给vm添加table成员即可。 vm.external = { aardio_function = function(x,sum){ console.log("我是aardio脚本,我被Javascript调用了,x =",x,"sum = ",sum) } } var javascript = /* //var sum = 0;//这个放这里,就是一个全局变量,值会一直保留 function test(x,y) { var sum = 0;//放这里,就是局部变量,值每次调用清0 external.aardio_function(x,sum);//调用aardio接口 sum+=x; for(i=0;i<10001;i++) sum = sum+x; return sum; } */ vm.AddCode(javascript); //加载脚本 io.open() //打开控制台 sum = vm.Run("test",16,23); //运行函数 console.log( sum ) sum = vm.Eval('test(16,23)') //用脚本表达式求值 console.log( sum ) vm.ExecuteStatement('test(16,23)') //执行脚本,不返回任何值 console.log( sum ) //重置虚拟机,丢弃所有对象和代码 vm.Reset() var javascript = /* function add(a,b) { return a+b } */ vm.AddCode(javascript); //加载脚本 //直接调用函数,支持多参数,并直接获取返回值 ret = vm.CodeObject.add(12,23) console.log( ret ) //显示第一个函数的名称 console.log( vm.Procedures(1).Name ) execute("pause") //按任意键继续 io.close()
如果没有那个vm.reset();
那么
vm.Procedures(1).Name
这个显示就一直是:jsConstructor ,除非改为(2)就可以得到函数名字了
这个问题待定.
为什么我要测试这个函数呢?
我准备把这个功能用在webkit调用js上面去,这样定义和添加个虚拟js机之后,就可以想什么时候用就什么时候用,而不用每次写那么多代码
但是,仔细想想,貌似自己封装一个aar函数给js代码,效果应该一样.....
1 个回复 | 最后更新于 2017-12-03
登录后方可回帖
测试发现,我理解这个功能错误了..
这个就是建立一个解析js的虚拟机, 然后再虚拟机里运行js代码,
用途: 如果你手里有js代码现成的算法, 那么可以用这个虚拟机运行这个算法,然后再aar里执行这个算法函数.....