使用eval模拟私有作用域标识符

时间:2014-04-28 11:01:54

标签: javascript node.js module scope eval

在为多人游戏编写服务器应用程序时,我有点想清理我的代码。

我大量使用Module Pattern作为我的应用程序,并使用约定来调用公开函数public[Function name]并私有private[Function name]public前缀有助于返回分配:

return {
    get : publicGet
}

但是私有标识符名称仅用于显示和调用它们有点麻烦。但是,完全删除private前缀会使代码的可读性降低。所以我想要使用保留的private关键字,例如,Java。

为此,我想我可以像这样使用eval

var private = eval('') // Just an empty assignment so it does nothing.

所以我可以写这样的私人函数:

private function initiateGameMatchmaker(game) {
    // Code...
}

而不是:

function privateInitiateGameMatchmaker(game) {
    // Code...
}

这是否可以接受,或者你认为这是一个肮脏的黑客,因此是一个明确的禁忌?

1 个答案:

答案 0 :(得分:1)

是否可接受,不起作用。

privateundefined,而private function foo(){}会抛出SyntaxError: Unexpected token function

不要试图将JavaScript融入一种语言的约定中。