我将如何以将其包装在闭包中的方式创建动态对象,然后再将成员添加到能够引用封闭变量的对象中?
如本例所示,test.myFunct()
不能引用封闭的example
变量:
var example = "from global";
(function (global) {
var example = "from closure";
global.test = {};
}(this));
test.myFunct = fnction () { return example; };
test.myFunct(); // "from global"
所以我尝试创建一个加法器函数,希望能解决这个问题,但无济于事:
var example = "from global";
(function (global) {
var example = "from closure";
global.test = {
add: function (name, value) { global.mJSON[name] = value; }
}
}(this));
test.add("myFunct", function () { return example; });
test.myFunct(); // "from global"
有没有办法在运行时后期动态地将成员添加到可以引用封闭成员的对象?
为什么需要它:
我正在使用mIRC 的COM 实现来访问MSScriptControl.ScriptControl
jScript 引擎。由于使用 mIRC 的限制,我被限制为从 mIRC 执行的每个命令约 4k 字节。因此,在调用ScriptControl
's AddCode
、ExecuteStatement
或Eval
方法之前,我需要将我的 JS 文件分解为大约 3500 字节或更小的块。
备注:
我宁愿不必使用返回包含的变量/函数的值的静态“助手”函数。