以这种方式构造JavaScript的名称/术语是什么?

时间:2013-07-25 14:53:54

标签: javascript coding-style structure design-patterns

我在过去一年左右的工作中一直在编写具有特定风格的JavaScript(例如下面的例子),并且想知道是否有人可以告诉我调用的样式或模式。我认为它有一个名字,但如果你不知道该怎么称,它就是其中之一,很难找到任何帮助。

var Page =
{
    DoStuff: function ()
    {
        // stuff gets done here
    },

    Save: function ()
    {
        // save logic
    }

};

然后可以像这样调用上面的js:

Page.Save();

我们一直在使用它,因为这意味着我们可以对函数进行命名空间,因此如果每个页面都有一个Save函数,它们都可以被称为相同的名称但从不冲突。

如果之前有人问过这个问题,我会道歉,但是当我不确定要使用哪个关键字时,我很难找到答案。

更新 感谢大家的快速反应。如果有人可以提供帮助,我还有一个问题。我过去曾试图做一种函数重载,所以我可以这样:

var Page = 
{
    DoStuff: function ()
    {
        // do stuff
    },

    DoStuff: function (name, type)
    {
        // do stuff with the name and type params
    }
};

但是这些函数最终会相互覆盖,所以读取的最后一个替换了另一个,我最终只有一个函数而不是能够同时调用

Page.DoStuff();
Page.DoStuff('lews0r', 'newbie');

是否可以重载此命名空间/模块结构中的函数?或者我只需要坚持命名第二个函数,例如Page.DoStuff2()(并且最佳函数名称的奖励将用于...)。

1 个答案:

答案 0 :(得分:1)

通常,我认为人们将这些称为“模块”。 “命名空间”也可能是一个合适的术语 - 通过在产品名称,库名称或公司名称中包含所有功能,您可以避免在全局命名空间中放置太多标签。

Nadh将其称为“面向对象编程”;我认为通常不同之处在于,在面向对象的编程中,您定义了一个类,而不是一个对象 - 您告诉程序如何创建尽可能多的Page实例,有时可以通过很少的方式进行修改。一些Javascript库提供了各种方法。但是如果你直接将Page分配为“具有这些功能的对象”,我倾向于将其视为“模块”。这几乎与Python之类的语言有关。

大多数这些做法可能没有正式名称,因为我个人认为ECMAScript(Javascript)的原始设计师从未完全预料到它最终会被使用的方式;人们非常有创造力。