我一直是一名JavaScript开发人员,我一直认为在JavaScript中实现私有成员的正确方法是使用Doug Crockford概述的技术:http://javascript.crockford.com/private .html.
在我开始使用Google Closure库之前,我认为这不是一个特别有争议的JavaScript智慧.想象一下我的惊喜......图书馆不遗余力地使用Crockford风格的信息隐藏.他们所做的就是使用特殊的命名约定,并在文档中注明"私人"成员.我习惯于假设谷歌的人通常处于软件质量的前沿,那么是什么呢?遵循克罗克福德先生的建议是否有一些不利因素?
主流JavaScript库中有很多伪隐私的例子.Facebook Connect的JavaScript库具有相同的结构.
开发人员走这条路的主要原因是性能.隐藏在闭包中的东西可能会更慢并且使用更多内存.关闭隐藏也可能不太灵活,因为没有一些聪明的黑客攻击,文件之间不能进行真正的隐私.封闭隐藏在概念上更纯粹,IMO,但是当性能受到关注时,使用伪隐私是可行的方法.
另一个原因是很多Google程序员都有Python背景,其中没有私有的东西,下划线前缀是公认的社区标准.