web.script库(JS、VBS解释器), JavaScript用aar函数重封装方法

By admin at 2017-12-02 • 0人收藏 • 625人看过
//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
2017-12-03   #1

测试发现,我理解这个功能错误了..


这个就是建立一个解析js的虚拟机, 然后再虚拟机里运行js代码,

用途: 如果你手里有js代码现成的算法, 那么可以用这个虚拟机运行这个算法,然后再aar里执行这个算法函数.....

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...