现在的位置: 首页 > 综合 > 正文

JavaScript中的公有成员,私有成员和静态成员

2018年05月04日 ⁄ 综合 ⁄ 共 1091字 ⁄ 字号 评论关闭

 http://blog.csdn.net/leiyuanxiu/archive/2009/04/07/4054621.aspx

JavaScript中的公有成员,私有成员和静态成员 收藏
私有成员就是在类的内部实现中可以共享的成员。但是并不对外公开,JavaScript中并没有特殊的机制来定义私有成员,但是可以用一些技巧来实现这个功能。主要是通过变量的作用域性质来实现的,在一个函数内部定义的变量称为局部变量,该变量不能被函数外的程序所访问,可以被函数内部定义的嵌套函数所访问。

在类的构造函数中可以为类添加成员,通过这种方式定义的成员,实际上共享了在构造函数内部定义的局部变量,这些变量就可以看作是类的私有成员。如:

实现私有成员

<script>

function class1(){

var pp="this is a private property";//私有属性成员pp

function pm(){//私有方法成员pm,显示pp的值

      alert(pp);

}

this.method1=function(){//在公有成员中改变私有属性的值

      pp="pp has been changed";

}

this.method2=function(){//在公有成员中调用私有方法

     pm();

}

}

var obj1 = new class1();

obj1.method1();

obj1.method2();

</script>

注意:

局部变量(私有成员)被所有在构造函数中定义的公有方法所共享,而且仅被在构造函数中定义的公有方法所共享,这意味着,在prototype中定义的类成员不能访问在构造器中定义的局部变量。

实现静态成员:

和私有成员勉强相比,静态成员就要正统的多了,静态成语就是属于一个类的成员,如:

function class1(){

}

class1.staticProperty="sample";

class1.staticMethod=function(){

         alert(class1.staticProerty);

}

class1.staticMethod();

如果要给每个函数对象都添加通用的静态方法,还可以函数对象所对应的类Function来实现:

Function.prototype.showArgsCount=function(){

            alert(this.length);

}

function class1(a){

}

class1.showArgsCount();

由此可见,通过Function的prototype原型对象,可以给任何函数都加上通用的静态成员。

 

 

抱歉!评论已关闭.