javascript中各种类成员的实现方式

在OO泛滥的年代,来看看js中是怎样实现私有成员的。
我之前买过一本书《Javascript高级程序设计》 Nicholas C.Zakas 著
总体来讲这本书还是可以的,但看完这本书还留了几个问题一直困扰着我,如js中私有变量的实现,prototype等,经过自己一系列测试,现在终于弄明白了。
很多书上都是说,js是不能真正实现私有成员的,因此在开发的时候,统一约定 __ 两个下划线开头为私有变量。
后来,发现js中闭包的特性,从而彻底解决了私有成员的问题。

 1 function testFn(){
 2       var _Name;//定义私有成员
 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");
13 
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 test.getName();//CC
11 

接下来在看看类静态变量是怎样实现的
function testFn(){
}
testFn.Name 
= "KenChen";
alert(testFn.Name);
//KenChen
testFn.Name = "CC";
alert(testFn.Name);
//CC

关于Portotype,继承等以后的博文中叙述。
原文地址:https://www.cnblogs.com/KenChen/p/1528256.html