Javascript私有成员的实现方式

开发 前端
在OO泛滥的年代,来看看Javascript私有成员是怎么实现的,以及各种类成员的实现方式。希望本文能给大家带来帮助。

我之前买过一本书《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风格链式调用
责任编辑:彭凡 来源: cnblogs
相关推荐

2015-07-06 09:59:56

JavaScript私有成员

2010-07-26 09:20:48

C#

2012-05-10 15:21:50

JavaScript

2022-03-28 20:57:31

私有属性class属性和方法

2011-03-07 09:41:10

JavaScript

2010-01-21 13:48:30

C++基类

2010-09-28 15:12:27

Javascript

2014-06-19 10:43:37

AndroidScrollerView平滑滚动

2011-03-10 14:19:56

JavaScript

2023-07-31 07:43:07

Java语言表达式变量

2023-05-22 15:35:10

JavaScriptWeb开发

2011-03-08 09:15:04

JavaScript

2017-10-17 11:04:24

2011-08-15 09:15:09

私有云云计算

2016-06-21 11:19:39

云计算混合云公有云

2022-01-04 16:35:42

C++Protected关键字

2024-01-29 16:47:44

函数封装开发

2015-11-10 09:34:58

JavaScript方式

2009-09-10 14:52:55

C# get

2020-06-12 08:28:29

JavaScript开发技术
点赞
收藏

51CTO技术栈公众号