说到反射,其实很多语言例如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的新属性。