实现定义标识符的JavaScript约定

实现定义标识符的JavaScript约定,javascript,naming-conventions,identifier,language-implementation,Javascript,Naming Conventions,Identifier,Language Implementation,在C语言中,如果编译器希望提供实现定义的标识符(语言扩展、内部函数、伪函数和伪宏,基本上是语言标准中不是保留关键字但也不是常规函数的任何东西),则约定名称的前缀为下划线;可以理解的是,代码不应出于正常目的使用此类名称 JavaScript中是否有类似的约定?或者,如果JavaScript编译器希望为特殊目的提供实现定义的标识符,并避免与代码中通常使用的标识符发生冲突,那么最好的方法是什么?如果您查看标准,语言本身使用的方法名遵循以下格式:[[MethodName]] 然而,这取决于你在做什么,单

在C语言中,如果编译器希望提供实现定义的标识符(语言扩展、内部函数、伪函数和伪宏,基本上是语言标准中不是保留关键字但也不是常规函数的任何东西),则约定名称的前缀为下划线;可以理解的是,代码不应出于正常目的使用此类名称

JavaScript中是否有类似的约定?或者,如果JavaScript编译器希望为特殊目的提供实现定义的标识符,并避免与代码中通常使用的标识符发生冲突,那么最好的方法是什么?

如果您查看标准,语言本身使用的方法名遵循以下格式:
[[MethodName]]

然而,这取决于你在做什么,单凭这一点并不完全安全。不能保证将来版本的ECMA脚本不会使用您正在使用的任何名称。此外,除非使用ECMA5对象属性,否则添加的任何属性都是可枚举的

根据您试图添加它们的位置,这可能是一个小问题,也可能是一个阻碍


如果你能分享更多你想要完成的细节,我们可能会更好地提供更多帮助。例如,新属性的名称间隔可能是一个更好的解决方案。

我没有从这个问题中了解到这是关于属性的。这个问题涉及“语言扩展、内部函数、伪函数和伪宏”或任何不是语言保留关键字的内容。我不认为这是属性名称。@jfriend00考虑到JS没有扩展,没有任何这些,因此没有推荐的做法,我向他指出了我能看到的最适用的东西。我认为JS没有推荐的做法这一事实更能说明问题。你的信息似乎与询问的内容不相关。如果OP提供了一些他们想做的事情的例子,肯定会有帮助。请提供一些你想做的事情的代码例子。@jfriend00一个合理的建议;唯一的问题是,我仍然在弄清楚我要做什么的细节!特别是,我试图弄清楚如何将C API公开给JavaScript程序。