api在此 http://api.haxe.org/Reflect.html
官方的解释是,Reflect 通过抽象的接口,以非类型化的方式动态地操纵值,,请谨慎使用。
那咱们就谨慎使用吧-_-|||
var test:Dynamic={};
[callMethod]
test.func = function(a:Float, b:Float):Float {
return a + b;
};
Reflect.callMethod(test, test.func, [1,2]);
//相当于test.func(1,2),感觉没啥用呢。
[copy]
Reflect.copy(test);//拷贝test,就是复制一份,test的改变不会影响此拷贝。
[deleteField]
test.a=1;
trace(test.a); //输出 1
Reflect.deleteField(test, "a");
trace(test.a); //输出 null
[field] [getProperty]
//这哥俩暂时没发现有啥区别,待以后慢慢发掘
trace(Reflect.field(test, "func"));//输出 <function>
trace(Reflect.getProperty(test, "func"));//输出 <function>
[fields]
//返回由字段名构成的数组,注意,不是字段值
trace(Reflect.fields(test))//输出[a,func]
[hasField]
//检查对象是否有指定的字段
trace(Reflect.hasField(test,"a"))//返回 true
trace(Reflect.hasField(test,"b"))//返回 false
[setField] [setProperty]
//设置属性值
//这哥俩暂时也没发现有啥区别,待以后慢慢发掘
Reflect.setField(test, "a", 2);
Reflect.setProperty(test, "a", 2);