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



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

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

return {
    get : publicGet
}

但私有标识符名称只是为了显示,所以调用它们有点麻烦。然而,完全删除private前缀会使代码的可读性有所降低。因此,我考虑像在Java中那样使用保留的private关键字。

为了做到这一点,我想我可以像这样使用eval

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

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

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

代替:

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

这是可以接受的吗?还是你认为这是一个肮脏的黑客行为,因此是一个明确的"不"?

接受与否,都不会起作用。

private将是undefined,而private function foo(){}将抛出一个SyntaxError: Unexpected token function

不要试图将JavaScript塑造成一种语言的惯例——事实并非如此。

最新更新