反射机制:指程序在运行时能够获取自身的信息。
例如:对于一个正在使用的对象,能够知道它有哪些方法和属性
JavaScript 中利用for(...in...)语句实现反射。
例如:
for(var p in obj){
if(typeof(obj[p]=='function')){
obj[p]();
}else{
alert(obj[p]);
}
}
这里var p 表示声明的一个变量,用以存储对象的属性或方法。遍历obj对象的所有属性和方法,遇到属性则弹出它的值,遇到方法则立即执行。在后面可以看到,在面向对象的JavaScript程序设计中,反射机制是很重要的一种技术,它在实现类的继承中发挥了很大的作用。
用反射机制传递样式参数:
function setStyle(_style){
//得到要改变样式的界面对象
var el = getElement();
for(var p in _style){
el.style[p] = _style[p];
}
}
程序中遍历 _style的每个属性,得到属性名称,然后再使用方括号语法将el.style中对应的属性赋值为_style中的相应属性的值。从而,el中仅改变指定的样式,而其他样式不会改变,得到了所要的结果。