说到反射,其实很多语言例如Java 和。Net都有反射的机制,看到这个高大上的名词,你肯定会想这是什么东西。反射是不是什么对一些什么东西的映射呢?
不是。
我们可以将反射通俗的理解成:当你在处理一个未知的对象时(你甚至连这个对象的一个属性或api都不知道),窥探它的内部结构,获取它的内部的属性和方法,这就是反射机制。
OK,我们如何窥探对象的内部结构呢?
for(var prop in obj){ console.log(prop); //或其他的语句 }
得到每个属性或者方法有什么作用,我们去窥探一个对象,得用到它的东西,所做的才有意义呀。
for(var prop in obj){ if(typeof obj[prop] === ‘function‘){ obj[p](); //方法就执行 }else{ console.log(obj[p]); //属性就输出 } }
这样我们就可以用里面的属性或者方法,这样反射机制才显得有意义。
实例:将一个对象obj1的属性赋值给obj2,要求obj2中的比obj1的多出的属性不可以被冲刷掉,如果有重复的属性,就被覆盖掉。
for(var prop in obj1){
obj2[prop] = obj1[prop];
}
console.log(obj2); //这样Obj2既能保存自己的属性成最新的值,又能增加Obj1的新属性。
时间: 2024-11-05 17:24:33