我在过去一年左右的工作中一直在编写具有特定样式的 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() 之类的不同名称(最佳函数名称奖将授予...)。
最佳答案
通常,我认为人们将这些称为“模块”。 “命名空间”也可能是一个合适的术语 - 通过将所有功能包含在产品名称、库名称或公司名称中,您可以避免在全局命名空间中放置太多标签。
Nadh 建议将其称为“面向对象编程”;我认为通常的区别在于,在面向对象的编程中,您定义了一个类,而不是一个对象——您告诉程序它如何创建尽可能多的 Page 实例,有时会根据需要进行少量修改。一些 Javascript 库提供了执行此操作的各种方法。但是,如果您直接将 Page 分配为“具有这些功能的对象”,我倾向于将其更多地视为“模块”。 Python 之类的语言大致就是这样工作的。
大多数这些实践可能没有一个正式名称,因为我个人认为 ECMAScript (Javascript) 的原始设计者从未完全预料到它最终会被使用的方式;人们变得非常有创造力。
关于javascript - 以这种方式构建 JavaScript 的名称/术语是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17861515/