什么是反射机制
反射机制指的是程序在运行时能够获取自身的信息。例如一个对象能够在运行时知道自己有哪些方法和属性。
在Java里,通过获取类的字节码对象,操纵类的属性和方法,使Java特别灵活。在JS里也有和Java反射机制类似的特性 for in,它除了用作循环,还可以体现出反射的思想。
1、for in用于循环
var arr=[{key:'key1'},{key:'key2'}]; for(var i in arr){ console.log(arr[i].key) }
2、for in用于反射
for(var p in obj){
if(typeof(obj[p]=="function"){
obj[p]();
}else{
alert(obj[p]);
}
}
3、for in反射的用途之一:设置dom的style
var _style={ color:'white',border:'1px solid black'}
domElement.style=_style //如果直接对style赋值,则会“冲掉”domElement原来已有的样式。
如果用小面的语句,就不会“冲掉”原来的样式:
// 注意区分for in是用于数组,还是json对象
for(var p in _style){
domElement.style[p]=_style[p];
}