【发布时间】:2017-01-15 20:51:15
【问题描述】:
我最近一直在阅读 Stefanov 的 Javascript Patterns。我发现这个例子让我很困惑:
使用约定来模拟功能的另一种情况是私有成员>约定。尽管您可以在 JavaScript 中实现真正的隐私,但有时 >evelopers 会发现只使用下划线前缀来表示私有 > 方法或属性更容易。考虑以下示例:
变种人 = {
getName: 函数 () {
返回 this._getFirst() + ' ' + this._getLast(); },
_getFirst: 函数 () {
// ... },
_getLast: 函数() {
// ... }
};
在此示例中,getName() 是一个公共方法,是稳定 API 的一部分,
而 _getFirst() 和 _getLast() 是私有的。
据我了解,方法是私有的还是公共的,是由它的编写方式定义的。例如,如果我们谈论的是构造函数,那么“this.getFirst() = function(){ ... }”将是一个公共方法,其中“var getFirst=function(){...}”将是私人的。
本书中的示例不是构造函数。而且我相信不能简单地使用下划线来使方法公开或私有。那么,我们应该如何在上面例子中声明的对象中创建私有或公共方法呢?
非常感谢!
【问题讨论】:
标签: javascript function methods private-methods public-method