我有一个非常大的Javascript脚本,里面有大量的全局变量和函数.然后是一段从这个js文件中调用一个函数的代码:myfunc();
好的,现在我克隆了这个脚本并修改了一些功能,所有函数原型和变量在两个脚本中都被命名为相同.所以现在我加载了两个脚本,并且一次调用myfunc(),现在我们有一个冲突,因为有大量具有相同名称的全局变量和两个myfunc().
我想要做的是将这个克隆的脚本包装在命名空间中,这样我就可以将原始调用修改为:clone.myfunc(),它将调用新函数,但我也希望myfunc()只引用原始脚本.换句话说,我无法触及原始脚本(没有权限),我希望能够在运行时使用克隆和原始脚本.
这是我克隆的脚本:http://pastebin.com/6KR5T3Ah
Javascript命名空间似乎相当棘手,这似乎是一个很好的命名空间方法:
var namespace = {
foo: function() {
}
bar: function() {
}
}
...
namespace.foo();
}
Run Code Online (Sandbox Code Playgroud)
然而,这需要使用一个对象,并且脚本(如上所述)在接近4000行时非常庞大,我认为太过于客观化了?
任何人都知道更好的解决方案,以避免命名空间污染,一个脚本我无法触摸,一个是该脚本的克隆.这样我就可以调用myfunc()和clone.myfunc(),并且所有全局变量都将在其受尊重的范围内运行.
它或者是,或者我通过并修改所有具有唯一名称的内容,这可能需要一生
如果它有助于上下文,那么这是一个Mozilla插件.
谢谢.
我正在将一些Java代码转换为Javascript,Java对象有一个静态初始化块,用于填充对象中的两个数组.我的理解是,无论创建多少个对象,此初始化程序只运行一次.我可以在Javascript中做这样的事情吗?
Java代码:
public final class MyObject {
private MyObject() { }
// ...
static {
// Run once static init code here
}
}
Run Code Online (Sandbox Code Playgroud)
这个run-once样式初始化可以在Javascript中完成吗?
谢谢
如何根据列"得分"选择表格中最大的100行?
我可以在"得分"栏中找到最高分:
SELECT max(score) FROM mTable
Run Code Online (Sandbox Code Playgroud)
然后获取该行:
SELECT * FROM mTable WHERE score=largestScore
Run Code Online (Sandbox Code Playgroud)
但是我如何将其包装起来并获得以下99个较低得分的行?
谢谢.