javascript中的反射机制的应用
2009-11-04 11:06
337 查看
http://blog.csdn.net/leiyuanxiu/archive/2009/04/08/4056507.aspx
javascript中的反射机制的应用 收藏
在javascript中有一个方便的语法实现反射,即for(...in...)语句,其语法是for(var p in obj){}这里的p表示声明了一个变量来存储obj对象的属性和方法,有了对象,属性或者方法可以用如下方式遍历:
for(var p in obj){
if(typeof(obj[p])=="function"){
obj[p]();
}else{
alert(obj[p]);
}
}
这段语句就遍历obj对象的所有属性和方法,如果遇到属性的话就弹出它的值,遇到方法就立即执行方法。
使用反射机制来传递样式参数:
在Ajax编程中,常常会用到动态的改变界面元素的样式,可以通过对象的style属性来改变如:
//要改变背景色为红色
element.style.backgroundColor="red";
其中style对象有很多属性,基本上CSS中的所有属性都可以在JavaScript中能够使用,现在考虑如果一个函数接收参数,用以指定一个界面元素的样式,那么就需要设计参数的实现方式,显然一个或者是几个参数是不能满足要求的,下面就是一种实现:
function setStyle(styleView){
var element = getElement();
element.style=styleView;
}
这样,直接将整个style对象作为参数传递进来了,一个style对象的可能形式可能是:
var style={
color:red,
backgroundColor:green,
borderwidth:2px
}
这时可以直接调用函数:
setStyle(style);
这中方式会出现一个问题:如果element原先就有一个样式,例如增经执行过:
element.style.height="20px";
而在styleView中没有对height的定义,因此element的height样式就丢失了,不是最初想要的结果,要解决这个问题,可以用反射机制来重写setStyle函数:
function setStyle(styleView){
var element = getElement();
for(var p in styleView){
element.style[p]=style[p];
}
}
程序中遍历styleView中的每个属性将其赋值给element的style对象,这样element中原先有个而在styleView中没有定义的属性也得到了保存,达到了预期的目的。
javascript中的反射机制的应用 收藏
在javascript中有一个方便的语法实现反射,即for(...in...)语句,其语法是for(var p in obj){}这里的p表示声明了一个变量来存储obj对象的属性和方法,有了对象,属性或者方法可以用如下方式遍历:
for(var p in obj){
if(typeof(obj[p])=="function"){
obj[p]();
}else{
alert(obj[p]);
}
}
这段语句就遍历obj对象的所有属性和方法,如果遇到属性的话就弹出它的值,遇到方法就立即执行方法。
使用反射机制来传递样式参数:
在Ajax编程中,常常会用到动态的改变界面元素的样式,可以通过对象的style属性来改变如:
//要改变背景色为红色
element.style.backgroundColor="red";
其中style对象有很多属性,基本上CSS中的所有属性都可以在JavaScript中能够使用,现在考虑如果一个函数接收参数,用以指定一个界面元素的样式,那么就需要设计参数的实现方式,显然一个或者是几个参数是不能满足要求的,下面就是一种实现:
function setStyle(styleView){
var element = getElement();
element.style=styleView;
}
这样,直接将整个style对象作为参数传递进来了,一个style对象的可能形式可能是:
var style={
color:red,
backgroundColor:green,
borderwidth:2px
}
这时可以直接调用函数:
setStyle(style);
这中方式会出现一个问题:如果element原先就有一个样式,例如增经执行过:
element.style.height="20px";
而在styleView中没有对height的定义,因此element的height样式就丢失了,不是最初想要的结果,要解决这个问题,可以用反射机制来重写setStyle函数:
function setStyle(styleView){
var element = getElement();
for(var p in styleView){
element.style[p]=style[p];
}
}
程序中遍历styleView中的每个属性将其赋值给element的style对象,这样element中原先有个而在styleView中没有定义的属性也得到了保存,达到了预期的目的。
相关文章推荐
- JavaScript的反射机制介绍及简单应用
- java类型安全枚举与反射机制相结合的应用 作者:封宇
- JavaScript 实现反射机制
- 关于类的反射机制应用
- javascript的“反射”机制
- 黑马程序员—反射机制及应用2
- android 应用开发,利用反射机制调用非官方api
- 28-反射机制-01-反射机制(概述&应用场景)
- 用反射机制简单应用配置文件
- 反射机制的理解与应用
- java中的反射机制应用
- protobuff反射机制的应用
- Java 反射机制应用实践
- Java中反射机制的应用
- 在Domino平台上应用Java 反射机制
- JavaScript 对象的反射及应用
- Objective-C之Foundation框架的NSObject和反射机制的应用
- Javascript利用反射机制和prototype实现类的继承
- java 反射机制及其应用
- AJAX JavaScript反射机制的介绍