aardio + VBScript 混合开发( 二 )


import com;namespace web;class script {    ctor(language = 'JScript'){{        this.msc = ..com.CreateObject("ScriptControl");        // …… 其他代码省略        this.reset = function(){            this.msc.Reset();            //脚本语言名称转为小写            var lang = ..string.lower(this.msc.Language);            //遍历 web.script.preload 名字空间            for(k,v in self.preload){                //如果扩展对象的 language 表指定了对当前语言启用扩展                if(!v.language || v.language[lang]){                    //执行扩展对象的 code 属性指定的脚本代码                    if(v.code)this.msc.AddCode(v.code);                    //执行扩展对象的 init 函数                    if(v.init)v.init(this.msc);                }            }        }        this.reset();        // …… 其他代码省略    }}}web.script.preload 名字空间下的扩展对象,可选指定以下三个属性:
1、属性 language 可用表对象指定支持哪些语言 。
2、属性 code 可用于指定默认加载的脚本代码 。
3、属性 init 可指定初始化执行的函数 。
然后我们再看一下 web.script.json 扩展库的 aardio 代码:
import web.json;import web.script;namespace web.script.json{};// JavaScript 扩展namespace web.script.preload.json3 {    language = {        javascript = true;        jscript = true;    }    code =  //省略JSON3 源码}// VBScript 扩展namespace web.script.preload.json3vbs {    language = {        vbscript = true;        vbs = true;    }    init = function(msc){        msc.AddObject("JSON",{            parse = function(...){                return ..web.json.parse(...);            };            stringify = function(...){                return  ..web.json.stringify(...)            };        })    }}

推荐阅读