得到一个带有方法的类,该方法接受一个对象并循环遍历它,将对象的值分配给类.这可能在应用程序中发生了很多,我想知道是否有一个有效的,最好是语言不可知的语法来验证对象的属性名称,并在分配给类之前确认值类型?我将需要将此代码导出到至少flash和javascript,可能还有其他人稍后要关注.我需要保持方法的通用性,因为它存在于基类中.下面的内容:
public function updateProperties(propsObj:Object):void {
  for (var prop in propsObj) {
    if (/* this has prop && typeof propsObj[prop] == typeof this[prop] */) {
      this[prop] = propsObj[prop];
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
对Haxe来说是新手,所以我在寻找这类方法的一系列方法时遇到了一些麻烦.反射似乎有接近我正在寻找的方法,但很多方法看起来可能是我需要的过度杀戮,希望有一些见解.
这似乎有效.
public function updateProperties(props:Dynamic) {
  for (prop in Reflect.fields(props)) {
    if (Reflect.hasField(this, prop)) {
      Reflect.setProperty(this, prop, Reflect.getProperty(props, prop));
    } else {
      trace("cannot set property " + prop + " on " + this);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)