Как я могу создать динамический объект таким образом, чтобы он был завернут в закрытие, а затем, возможно, сможет добавлять членов к объекту, который может ссылаться на вложенные переменные?Как создать динамические члены объекта, которые могут ссылаться на вложенные переменные/функции?
Как показывает этот пример, 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's реализации COM для доступа к MSScriptControl.ScriptControl
«s JScript двигателя. Из-за ограничений с использованием mIRC я ограничен ~ 4k байтами для выполнения каждой команды из mIRC. Таким образом, мне нужно разорвать свой JS-файл на куски ~ 3500 байт или меньше, прежде чем вызывать методы AddCode
, ExecuteStatement
или Eval
.
Примечание:
Я предпочел бы не использовать статическую «вспомогательную» функцию, которые возвращают значения переменных/функций, заключенных.
Почему вы пытаетесь заключить их в закрытие вместо того, чтобы просто сделать их общедоступными, если хотите, чтобы они были доступны для произвольных функций? – Bergi
Мой план был/должен иметь функцию обертки, которая переваривает аргументы, а затем возвращает динамический объект, зависящий от этих переваренных аргументов. – SReject
Как бы вы это использовали? Где вам это нужно? – Bergi