Нет, вы не можете разыграть Object
в Class
, но, поскольку Class
- это Object
, вы можете поступить иначе, но помните, что доступ к члену из Class
быстрее, чем к члену доступаиз Object
.
Чтобы преобразовать Object
в Class
, вам нужно будет создать экземпляр Class
, а затем скопировать каждое поле Object
в это Class
.Но будьте осторожны, они не будут одним и тем же экземпляром, это копия.
Чтобы сделать обратное, вам придется использовать descriptionType в Class
, чтобы перечислить все открытые поля этого Class
, а затем скопируйте значение в новый Object
.
// simple sample:
class A {
public var testA:int;
public var testB:int;
}
function Object2A(o:Object):A {
var ret:A = new A();
for (var fieldName:String in o) {
if (ret.hasOwnProperty(fieldName)) {
ret[fieldName] = o[fieldName];
}
}
return ret;
}
import flash.utils.describeType;
function A2Object(a:A):Object {
var ret:Object = {};
var fields:XMLList=describeType(a).variable;
for each(var field:XML in fields) {
var fieldName:String=field.@name.toString();
ret[fieldName]=a[fieldName];
}
return ret;
}
var o:Object = {testA:12, testB:13};
var a:A = Object2A(o); // copy from object into class
o=A2Object(a); // copy from class into object