我正在处理UI jsp页面中的Web项目。所有jquery / javascript方法都是通过这种模式调用的
A.b.c.d.methodName()
在jsp页面中导入了许多.js文件。所以我必须在Eclipse IDE中搜索 跟踪方法js文件。
在js文件中,名称完全不同于“A.b.c.d”,该方法声明为
methodName: function()
{ // logic }
有谁能告诉我这种使用jquery的风格/模式是什么。
答案 0 :(得分:1)
JavaScript永远不会查找文件名,您看到的“命名空间”是由作为属性彼此嵌套的对象实现的。
例如,如果您创建一个对象,如:
var A = {
b: {
c: {
d: {
methodName: function () {
console.log('What a nice method!');
}
}
}
}
};
您可以这样称呼它:
A.b.c.d.methodName();
或者您可以稍后在代码中添加方法:
var irrelevantName = function () {
console.log('This method is even nicer');
};
A.b.c.method2 = irrelevantName;
并通过以下方式调用:
A.b.c.method2();
有很多使用的扩展方法已经出现在很多JavaScript框架中,比如jQuery或MooTools。这提供了一种安全扩展对象的方法,同时保留原始值(如果存在)。
您可以使用jQuery,如:
$.extend(A.b.c.d, {
method3: function () {
console.log('An other nice method');
}
});
正如您所料,它可以被称为:
A.b.c.d.method3();
JavaScript库通常使用命名空间:它们创建某种对象并使用其所有方法填充它。这样他们就可以don't pollute the global namespace使用他们的方法。
有a lot of ways在JS中为对象添加新属性,因此将方法添加到对象并不总是很明显,但可以肯定地说文件名与它无关
有关该主题的进一步阅读,我建议this google search。基本上,前20个结果中的任何一个都应该解释如何在JavaScript中创建和使用命名空间。
在脚注上:我不确定Eclipse工具如何支持JS,但由于它不是一个小问题(对象结构可以动态修改),如果Eclipse不了解JavaScript,我不会感到惊讶命名空间。
答案 1 :(得分:0)
看起来它有某种命名空间。可以使用的代码可能是AMD模式吗?但同样,如果它是JSP,它可能会变老......