我有一个有趣的问题,我不确定如何最好地解决。
我有JS脚本,其中包含以下内容:
var obj = new namespace.MyObjectName("key", [12, 11, 22, 33, 454, 552, 222], [33, 22, 33, 11, 22, 222, 111]);
namespace.MyObjectName = function(keyName, data1, data2) {
this.myData1 = data1;
this.myData2 = data2;
this.holder = [
[keyName, [myData1, myData2]]
];
};
namespace.MyObjectName.prototype.DoSomething = function(arg1, argArray) {
this.globalVar = [
"Display " + arg1 + " into string using " + argArray[0] + "<br> for visual purposes",
"Display " + arg1 + " into string using " + argArray[2] + "<br> for visual purposes"
];
};
自动化正在创建这些JS文件的副本,每个文件包含与上面相同的对象声明,文件名的行如下:
每个文件的区别在于 DoSomething 方法名称内容总是不同/生成,传递给构造函数的数组值也是如此。
上述所有内容在JS独立使用期间都很好。
<小时/> 我现在要做的是让一个HTML页面动态加载一个或多个这些文件(以便稍后通过编写代码进行比较),我可能会使用this answer,但是因为每个脚本声明了以同样的方式对象,当我加载多个副本时,我面临着弄清楚如何阻止它们相互踩踏。
以下是我正在考虑的一些选项:
我目前的偏见是针对(1)但是我把整个事情都放在讨论中,因为这种方法可能会有固有的问题,或者其他方法可能会被证明是优越的。
答案 0 :(得分:1)
关于(2),可以使用iframe在沙箱中运行javascript,例如检查Dean Edwards的Sandbox.eval()或Slickspeed Selectors Test。
答案 1 :(得分:0)
我真的不明白这个问题,但为了避免践踏命名空间,你可以做到:
var namespace = namespace || function() {}