Javascript私有成员的实现方式
创始人
2024-04-19 05:51:53
0

我之前买过一本书《Javascript高级程序设计》 Nicholas C.Zakas 著

总体来讲这本书还是可以的,但看完这本书还留了几个问题一直困扰着我,如js中私有变量的实现,prototype等,经过自己一系列测试,现在终于弄明白了。

很多书上都是说,Javascript是不能真正实现Javascript私有成员的,因此在开发的时候,统一约定 __ 两个下划线开头为私有变量。

后来,发现Javascript中闭包的特性,从而彻底解决了Javascript私有成员的问题。

  1.  function testFn(){  
  2.        var _Name;//定义Javascript私有成员  
  3.        this.setName = function(name){  
  4.           _Name = name; //从当前执行环境中获取_Name  
  5.        }  
  6.        this.getName = function(){  
  7.           return _Name;  
  8.        }  
  9. }// End testFn  
  10. var test = testFn();  
  11. alert(typeof test._Name === "undefined")//true  
  12. test.setName("KenChen"); 

test._Name 根本访问不到,但是用对象方法能访问到,因为闭包能从当前的执行环境中获取信息。

接下来我们看看,共有成员是怎样实现的

  1. function testFn(name){  
  2.    this.Name = name;  
  3.    this.getName = function(){  
  4.       return this.Name;  
  5.    }  
  6. }  
  7. var test = new testFn("KenChen");  
  8. test.getName(); //KenChen  
  9. test.Name = "CC";  
  10. est.getName();//CC 

接下来在看看类静态变量是怎样实现的

  1. function testFn(){  
  2. }  
  3. testFn.Name = "KenChen";  
  4. alert(testFn.Name);//KenChen  
  5. testFn.Name = "CC";  
  6. alert(testFn.Name);//CC 

关于Portotype,继承等以后的博文中叙述。

【编辑推荐】

  1. JavaScript类和继承:prototype属性
  2. JavaScript类和继承:this属性
  3. ExtJS Grid Tooltip的3+1种实现方式总结
  4. JavaScript异步调用框架的链式实现
  5. JavaScript异步调用框架的jQuery风格链式调用

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...