javascript - 用于标记私有(private)成员的前导下划线

标签 javascript oop coding-style private jslint

据我所知,在 JavaScript 中没有好的解决方案来创建私有(private)成员。解决方案描述 here效率不高,因为私有(private)成员成为对象的一部分,而不是原型(prototype),因此需要更多内存。
所以,我决定只使用 Python 实践——用前导下划线标记私有(private)内容,让其他人知道 makred 属性或方法不打算从外部使用。
但是有一个著名的代码质量工具- JSLint , 它建议不要使用前导或尾随下划线。
这背后的原理是什么?这只是代码风格建议还是下划线会导致更严重的问题?如果它只是 JS 社区的代码风格约定,它有多强?

最佳答案

JSLint 是一个很好的工具,但它表达了关于其作者风格的编码实践的意见。 Read about what those preferences are here .在 JavaScript 解析器中使用前导下划线/下划线没有坏处,该工具被编程为将此视为不良约定并警告您不要使用它。如果使用前导下划线是您的偏好并且有意义,请使用它们。

如果您不想在使用以下划线/下划线开头的标识符时在 JSLint 中看到警告,则 JSLint 中有一个设置可以对您隐藏这些警告。像这个例子一样包装你不想被评估的代码,你不会看到警告:

 /*jslint nomen: true */
 var _gaq = {};
 /*jslint nomen: false */

如果您从文件中评估代码,这是正确的,但如果您在 JSLint 网站上,则有一个选项“容忍...悬空 _ 在标识符中”也可以删除警告。

请注意,这样做可能会导致 JSHint 解析文件的方式出现问题。看看这个显示 JSLint vs JSHint 的链接关于那个旗帜。但是,如果您打算按照 JSLint 标准进行混合,那么混合使用 JSHint 可能会造成一些困惑。

如果不使用闭包,JavaScript 中就不会存在私有(private)变量,但这并不是每个项目执行都需要的模式。如果您想了解更多关于 JavaScript 闭包的信息,请查看 Ben Nadel's wonderful blog postNetTuts+

关于javascript - 用于标记私有(private)成员的前导下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094328/

相关文章:

javascript - 如何从数组中删除单个元素

javascript - jQuery:将回调函数添加到另一个函数

php - 我正在尝试结合 PDO 和 OOP,但无法正常工作

c++ - 我如何在 C++ 中实现两个类之间的关联?

java - 什么时候需要使用抽象类?

Ruby:除非与如果不是

php - 确认 CodeIgniter anchor 链接中的框以删除记录

javascript - 使用数组对多个文本字段进行表单验证

haskell - 我的第一个 Haskell 程序有哪些可以改进的地方?

java - 如何检查函数的任意两个参数是否为空