用一个特殊的表示符,比如下划线,来提示这个属性是私有的。

--------------------------

我个人并不赞同用闭包来模拟。

事实上,在C#中,有privateObject这种东西可以篡改私有的property和field。而Python中,是推荐用下划线来提示私有的。

你看,私有的东西并不是一定不能暴露的。

注意:私有是一种约定,并不是一种实现。

私有变数主要是两个作用:

1. 防止别人以及你自己篡改滥用你的代码。2. 防止下次你重构的时候把别人的代码搞挂了。

第二个目的用一下划线就可以解决,第一个嘛……

不仅仅是私有变数,所有的设计模式都是防君子不防傻逼。
闭包。

function Data(){
var a;
return {
getA:function(){return a},
setA:function(aaa){a=aaa}
}
}

结果:


从书上看来的


let a = 1;

块级作用域,embracing es6!
var a;//私有变数 this.a;//公共变数function XXX()//私有方法obj.prototype.XXX=function()//公共方法

关于闭包:JavaScript之作用域与闭包详解
推荐阅读:
相关文章