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

Reading number is top 10 articles
.net开发投票机的思路_.net资料_编程技术
.net组件开发系列(三)之武术系列-控件生命周期与控件事件机制_[Asp.Net教程]
SQL Server备份文件导入当前数据库_[SQL Server教程]
一段HTML代码组成的页面取其中前300个字_[Asp.Net教程]
探讨一种AJAX性能的改进方法_[Asp.Net教程]
浏览UTF-8编码的网页出现空白解决方法_php资料_编程技术
PHP学习研究:PHP.INI配置文件漫游_php资料_编程技术
关于ASP.NET2.0,中的用户控件编程使用_.net资料_编程技术
Flex+asp.net上传文件_[Asp.Net教程]
SQL数据操作基础(初级)5_mssql学习_编程技术
Reading number is top 10 pictures
The money of more than 100 countries and regions11
Tie a large font of mouse
Sora aoi mirror memorial classics2
Sora aoi possession photo2
穷哥们向美女求婚攻略
关于海盗的研究2
On the verge of extinction of the beach1
福利是必须的
某某人向找小三的人宣战了
每天进步一点点
Download software ranking
尖东毒玫瑰B
Eclipse-CALMSANNY (second edition)
Eclipse 4.2.1 For Win32
Sora aoi - one of more PK
Tram sex maniac 2 (H) rar bag7
apache-tomcat-6.0.33
WebService在.NET中的实战应用教学视频 → 第3集
C++教程第四版
Tram sex maniac 2 (H) rar bag4
在线棋牌游戏3.05版
delv published in(发表于) 2014/1/6 8:47:28 Edit(编辑)
AJAX的JavaScript的反射机制_[Asp.Net教程]

AJAX的JavaScript的反射机制_[Asp.Net教程]

AJAX的JavaScript的反射机制_[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.