JavaScript闭包与私有变量
2015-05-05 20:30
197 查看
<script> function Person(name) { /** * 此时就没有办法直接访问name这个属性,因为没有this.name * 要访问name只能通过this.getName和this.setName * 但是使用这种方式创建私有变量带来的问题是,每个对象都存储大量 * 的函数。 * 解决办法通过静态私有变量来解决。 */ this.setName = function (value) { name = value; } this.getName = function() { return name; } } var p = new Person("jack"); alert(p.getName()); </script>
解决办法:
<script> var Person; (function(){ // name正在函数结束之后就消失,在外面是无法引用的 var name = ""; Person = function(value) { name = value; } Person.prototype.setName=function(value){ name = value; } Person.prototype.getName=function(){ return name; } })(); var p1 = new Person("Ann"); alert(p1.getName()); </script>
相关文章推荐
- 父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)
- 拷贝函数访问本类的私有变量的问题
- .net 反射调用私有变量
- 友元:在本类之外访问本类的私有成员变量
- JS私有变量和静态私有变量
- 如何打印一个类的属性(例如textview里的控件等,基于oc里没有绝对的私有变量这一规则实现)
- Python(私有变量)类中的特殊方法
- java反射机制 给类的私有变量赋值。
- 导出DLL 隐藏私有成员变量和成员函数 工厂方法
- JavaScript学习-私有变量
- C#通过反射修改私有变量的值
- 类的重写和类的私有变量
- 使用Java反射机制实现访问类中的私有变量或者方法
- 三.Android单元测试 PowerMock给私有变量赋值
- 私有实例变量 和方法
- 函数表达式---私有变量
- 线程私有变量
- RunTime应用--对私有变量进行更改
- Unity中私有变量如何显示在Inpsector面板中?
- OC基础day4-继承,self,super,多态,类对象,SEL类型,description,私有方法与私有变量,三种访问限制