0

我正在开发一个在 UI jsp 页面中的 Web 项目。所有的 jquery/javascript 方法都是通过这个模式调用的

A.b.c.d.methodName() 

jsp页面中导入了很多.js文件。所以我必须在 Eclipse IDE 中搜索来跟踪方法 js 文件。

在具有完全不同名称而不是“Abcd”的js文件中,该方法被声明为

methodName: function()
{ // logic }

谁能告诉我这种使用 jquery 的风格/模式是什么。

4

2 回答 2

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 框架中出现了一种常用的扩展方法,比如jQueryMooTools。这提供了一种安全扩展对象的方法,同时保留原始值(如果存在)。

您可以使用 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 命名空间,我不会感到惊讶。

于 2013-11-13T07:35:38.063 回答
0

看起来它有某种命名空间。可能使用的代码可能是AMD模式?但同样,如果它是 JSP,它可能已经过时了......

于 2013-11-13T07:24:26.207 回答