我是一名熟练的 C/C++ 程序员,必须在 javascript 中实现 firefox 扩展(一种对我来说非常不愉快且不直观的语言)。我有扩展基础工作,但现在我需要将所有全局变量和函数放入一个命名空间中,以确保我的变量名或函数名都不会与任何过去/现在/未来的全局/窗口对象中可能存在的名称冲突,或在另一个扩展中。
用我的全局变量创建一个命名空间对象似乎很简单,而且很有效。
我无法理解的是如何将我的函数声明放入命名空间对象中,然后在命名空间对象声明下实现所有这些函数。这可以通过一些相当干净的语法来完成......类似于以下内容?
//
// declare namespace
//
var mynamespace = {
varname00: value,
varname01: value,
varname02: value,
function: funcname00(),
function: funcname01(number),
function: funcname02(number, string),
};
//
// define functions
//
mynamespace.funcname00() {
return (23);
}
mynamespace.funcname01(number) {
return (number * number);
}
mynamespace.funcname02(number, string) {
econsole.logStringMessage("funcname02() : " + string + number);
return (number);
}
注意:我的目标不是变得棘手或先进——恰恰相反!我正在寻找一种对 C 程序员尽可能直观的技术!因此,我更喜欢:
1:在顶部创建一个命名空间对象的小声明,只声明变量和函数。
2:实现全局命名空间对象之外的功能。
完全被 javascript 语法规则弄糊涂了,我猜 javascript 可能会让我在命名空间对象声明中插入所有函数定义/实现。这对我来说是粗俗和丑陋的,但如果这是唯一可行的方法,我将不得不忍受它。但是(对我个人而言)有一个如此巨大的块包含“一切”是非常恶心的,所以如果可能的话,我宁愿避免这种情况。
注意:这不是征求关于程序风格的意见——恰恰相反。我只想知道与我在上面的示例中展示的传统 C 语法/布局最接近的 javascript 语法实际上是什么。如果最接近我的示例的 javascript 语法/布局在某种程度上慢、效率低或功能有问题,我愿意接受有关执行效率的评论。谢谢。