AJAX中JavaScript类的三种成员

cc_牛

cc_牛

2016-02-19 22:13

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的AJAX中JavaScript类的三种成员懂设计的网友们快点来了解吧!

实现类的公有成员

  前面定义的任何类成员都属于公有成员的范畴,该类的任何实例都对外公开这些属性和方法。

  实现类的私有成员

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  私有成员即在类的内部实现中可以共享的成员,不对外公开。JavaScript中并没有特殊的机制来定义私有成员,但可以用一些技巧来实现这个功能。

  这个技巧主要是通过变量的作用域性质来实现的,在JavaScript中,一个函数内部定义的变量称为局部变量,该变量不能够被此函数外的程序所访问,却可以被函数内部定义的嵌套函数所访问。在实现私有成员的过程中,正是利用了这一性质。

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

<script language="JavaScript" type="text/javascript">
<!--
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();  //调用公有方法method1
obj1.method2();  //调用公有方法method2
//-->
</script>

显示了运行的结果。

  这样,就实现了私有属性pp和私有方法pm。运行完class1以后,尽管看上去pp和pm这些局部变量应该随即消失,但实际上因为class1是通过new来运行的,它所属的对象还没消失,所以仍然可以通过公开成员来对它们进行操作。

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

  要使用私有成员,是以牺牲代码可读性为代价的。而且这种实现更多的是一种JavaScript技巧,因为它并不是语言本身具有的机制。但这种利用变量作用域性质的技巧,却是值得借鉴的。

  实现静态成员

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  静态成员属于一个类的成员,它可以通过“类名.静态成员名”的方式访问。在JavaScript中,可以给一个函数对象直接添加成员来实现静态成员,因为函数也是一个对象,所以对象的相关操作,对函数同样适用。例如:

function class1(){//构造函数
}
//静态属性
class1.staticProperty="sample";
//静态方法
class1.staticMethod=function(){
 alert(class1.staticProperty);
}
//调用静态方法
class1.staticMethod();

  通过上面的代码,就为类class1添加了一个静态属性和静态方法,并且在静态方法中引用了该类的静态属性。

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

//给类Function添加原型方法:show ArgsCount
Function.prototype.showArgsCount=function(){
 alert(this.length); //显示函数定义的形参的个数
}
function class1(a){
 //定义一个类
}
//调用通过Function的prototype定义的类的静态方法showArgsCount
class1. showArgsCount ();

  由此可见,通过Function的prototype原型对象,可以给任何函数都加上通用的静态成员,这在实际开发中可以起到很大的作用,比如在著名的prototype-1.3.1.js框架中,就给所有的函数定义了以下两个方法:

//将函数作为一个对象的方法运行
Function.prototype.bind = function(object) {
 var __method = this;
 return function() {
  __method.apply(object, arguments);
 }
}
//将函数作为事件监听器
Function.prototype.bindAsEventListener = function(object) {
 var __method = this;
 return function(event) {
  __method.call(object, event || window.event);
 }
}

  这两个方法在prototype-1.3.1框架中起了很大的作用,具体含义及用法将在后面章节介绍。

展开更多 50%)
分享

猜你喜欢

AJAX中JavaScript类的三种成员

Web开发
AJAX中JavaScript类的三种成员

冒泡算法的三种JavaScript表示

电脑网络
冒泡算法的三种JavaScript表示

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Javascript事件处理代码的三种写法

Web开发
Javascript事件处理代码的三种写法

javascript Ajax 类实现代码

Web开发
javascript Ajax 类实现代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JavaScript动态加载CSS的三种方法

Web开发
JavaScript动态加载CSS的三种方法

用javascript实现页面打印的三种方法

Web开发
用javascript实现页面打印的三种方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win7系统透明效果如何关闭

Win7系统透明效果如何关闭

用JavaScript事件在主页上玩花样

用JavaScript事件在主页上玩花样
下拉加载更多内容 ↓