А.С. Джош Стодола упомянул, что создание переменной во время выполнения не проблема
var holdsWidgetUUID = "widgetUUIDValue";
eval(holdsWidgetUUID + "= (" + data + ")");
alert(eval(holdsWidgetUUID));
Или, если вы предпочитаете
var UUID = "widgetUUID";
var holdsWidgetUUID = "widgetUUIDValue";
window["widgets"] = new Array();
window["widgets"][holdsWidgetUUID] = data;
alert(window["widgets"][holdsWidgetUUID]);
Проблема заключается в том, что загруженный javascript работает так, чтобы его можно было вызывать как dynamicvariablename.methodname ()
У меня есть рабочее решение, если вы наложите определенную практику кодирования на включенный JavaScript. Может быть, это приведет вас в правильном направлении.
Это виджет JavaScript (works.js). Заметим, что это «класс» javascript с внутренне определенными полями и методами. Что само по себе поддерживает низкий уровень загрязнения пространства имен и позволяет нам достичь желаемой формы вызова x.getInfo ()
function () {
this.type = 1;
this.color = "red";
this.getInfo = function() {
return this.color + ' ' + this.type + ' widget';
};
}
И это файл, который включает его во время выполнения в пространстве имен
<html>
<head>
<title>Widget Magic?</title>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
var UUID = "widgetUUID";
var holdsWidgetUUID = "widgetUUIDValue";
window["widgets"] = new Array();
$.get("works.js", function(data) {
window["widgets"][holdsWidgetUUID] = eval("(" + data + ")");
$(document).ready(function() {
window["widgets"][holdsWidgetUUID] = new (window["widgets"][holdsWidgetUUID])();
alert(window["widgets"][holdsWidgetUUID].color);
alert(window["widgets"][holdsWidgetUUID].getInfo());
});
});
</script>
</head>
<body>
<p>Just some stuff</p>
</body>
</html>