All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
SQL,Server,2005,Express附加(Attach)的数据库为“只读”的解决方法_[SQL,Server教程]
LAMP-Linux+Apache+Mysql+PHP典型配置_[PHP教程]
PHP实现在图片中添加中文文字_[PHP教程]
春节大盘点:.NET技术的回顾与展望_.net资料_编程技术
新手入门:学习掌握动态网页PHP的编程语句_php资料_编程技术
用PHP5的DirectoryIterators递归扫描目录_php资料_编程技术
一种通过sql,server的作业调度+存储过程来建立自动备份的方法_[SQL,Server教程]
使用javascript修改客户端注册表_JavaScript技术_编程技术
RIA和AJAX分析_[AJAX教程]
初学解惑:关于ASP.NET技术的学习顺序问题_.net资料_编程技术
Reading number is top 10 pictures
The money of more than 100 countries and regions3
你白吃了多少药
China railway shunting skills competition
西班牙山村小景3
日本小萝莉2
9.3阅兵全景图7-指挥系统和后勤保障系统梯队
初五接财神啦!五路财神齐来到
The money of more than 100 countries and regions18
9.3阅兵全景图6-常规导弹梯队和核导弹梯队
美奂绝伦的风景
Download software ranking
Sora aoi - one of more PK
都市狐狸姑娘传
C++教程第四版
美女写真3
功夫熊猫2(下集)
I'm come from Beijing2
Boxer vs Yellow3
仙剑奇侠传98硬盘WINXP版
Boxer's Top ten classic battle7
双旗镇刀客B
delv published in(发表于) 2014/1/6 8:47:23 Edit(编辑)
AJAX入门之使用for实现反射机制_[Asp.Net教程]

AJAX入门之使用for实现反射机制_[Asp.Net教程]

AJAX入门之使用for实现反射机制_[Asp.Net教程]

什么是反射机制

  反射机制指的是程序在运行时能够获取自身的信息。例如一个对象能够在运行时知道自己有哪些方法和属性。

  在JavaScript中利用for(…in…)语句实现反射

  在JavaScript中有一个很方便的语法来实现反射,即for(…in…)语句,其语法如下:


for(var p in obj){
      //语句
}

  这里var p表示声明的一个变量,用以存储对象obj的属性(方法)名称,有了对象名和属性(方法)名,就可以使用方括号语法来调用一个对象的属性(方法):


for(var p in obj){
      if(typeof(obj[p]=="function"){
             obj[p]();
      }else{
             alert(obj[p]);
      }
}

  这段语句遍历obj对象的所有属性和方法,遇到属性则弹出它的值,遇到方法则立刻执行。在后面可以看到,在面向对象的JavaScript程序设计中,反射机制是很重要的一种技术,它在实现类的继承中发挥了很大的作用。

  使用反射来传递样式参数

  在Ajax编程中,经常要能动态的改变界面元素的样式,这可以通过对象的style属性来改变,比如要改变背景色为红色,可以这样写:

element.style.backgroundColor="#ff0000";

  其中style对象有很多属性,基本上CSS里拥有的属性在JavaScript中都能够使用。如果一个函数接收参数用用指定一个界面元素的样式,显然一个或几个参数是不能符合要求的,下面是一种实现:


function setStyle(_style){
      //得到要改变样式的界面对象
      var element=getElement();
      element.style=_style;
}

  这样,直接将整个style对象作为参数传递了进来,一个style对象可能的形式是:


var style={
      color:#ffffff,
      backgroundColor:#ff0000,
      borderWidth:2px
}

  这时可以这样调用函数:


setStyle(style);

  或者直接写为:


setStyle({ color:#ffffff,backgroundColor:#ff0000,borderWidth:2px});

  这段代码看上去没有任何问题,但实际上,在setStyle函数内部使用参数_style为element.style赋值时,如果element原先已经有了一定的样式,例如曾经执行过:


element.style.height="20px";

  而_style中却没有包括对height的定义,因此element的height样式就丢失了,不是最初所要的结果。要解决这个问题,可以用反射机制来重写setStyle函数:


function setStyle(_style){
      //得到要改变样式的界面对象
      var element=getElement();
      for(var p in _style){
            element.style[p]=_style[p];
      }
}


  程序中遍历_style的每个属性,得到属性名称,然后再使用方括号语法将element.style中的对应的属性赋值为_style中的相应属性的值。从而,element中仅改变指定的样式,而其他样式不会改变,得到了所要的结果。


来源:CSDN





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.