我正在开发一个在 UI jsp 页面中的 Web 项目。所有的 jquery/javascript 方法都是通过这个模式调用的
A.b.c.d.methodName()
jsp页面中导入了很多.js文件。所以我必须在 Eclipse IDE 中搜索来跟踪方法 js 文件。
在具有完全不同名称而不是“Abcd”的js文件中,该方法被声明为
methodName: function()
{ // logic }
谁能告诉我这种使用 jquery 的风格/模式是什么。
我正在开发一个在 UI jsp 页面中的 Web 项目。所有的 jquery/javascript 方法都是通过这个模式调用的
A.b.c.d.methodName()
jsp页面中导入了很多.js文件。所以我必须在 Eclipse IDE 中搜索来跟踪方法 js 文件。
在具有完全不同名称而不是“Abcd”的js文件中,该方法被声明为
methodName: function()
{ // logic }
谁能告诉我这种使用 jquery 的风格/模式是什么。
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 库通常使用命名空间:它们创建某种对象并使用它们的所有方法填充它。这样他们就不会用他们的方法污染全局命名空间。
在 JS中有很多方法可以向对象添加新属性,因此如何向对象添加方法并不总是很明显,但可以肯定地说文件名与它无关。
为了进一步阅读这个主题,我会推荐这个谷歌搜索。基本上,前 20 个结果中的任何一个都应该解释命名空间是如何在 JavaScript 中创建和使用的。
脚注:我不确定 Eclipse 工具如何支持 JS,但由于这不是一个小问题(对象结构可以动态修改),如果 Eclipse 不了解 JavaScript 命名空间,我不会感到惊讶。
看起来它有某种命名空间。可能使用的代码可能是AMD模式?但同样,如果它是 JSP,它可能已经过时了......