我试图了解(显示)模块模式中的public` 属性是如何工作的。Carl Danley “ The Revealing Module Pattern ”指出的一个优点是:
显式定义的公共方法和变量,可提高可读性
让我们看一下这段代码(小提琴):
var a = function() {
var _private = null;
var _public = null;
function init() {
_private = 'private';
_public = 'public';
}
function getPrivate() {
return _private;
}
return {
_public : _public,
init : init,
getPrivate : getPrivate,
}
}();
a.init();
console.log( a._public ); // null
console.log( a.getPrivate() ); // "private"
null
调用时返回a._public
。我现在可以操纵该公共财产,例如a._public = 'public';
. 但我不能从我的对象中改变它。或者至少这些更改没有通过。我有点期待它会"public"
像之前通过 - 方法更新的那样init
。
这实际上是否意味着,我不能有任何方法来处理公共属性?那么这种模式下的公共属性就没有意义了,对吧?我也试过这个没有运气(小提琴):
return {
_pubic : _public,
init2 : function() {
_public = 'public';
}
}
return
最后但并非最不重要的一点是,我对整个声明有疑问。为什么不能只使用return this;
公开所有内容?应该是自this
调用函数的上下文,它不应该只返回其中的所有内容吗?为什么我必须创建另一个返回的对象?在这个小提琴中,它返回window
对象。