Flash 是否有与 toString 相反的方法?
Does Flash have a method that does the reverse of toString?
使用 ObjectUtil 时,有一个名为 toString() 的方法,它接受一个对象。如果你给它传递一个 class 命名的 "Person" 它将 return 字符串“[class Person]”。
var person:Person = new Person();
trace(ObjectUtil.toString(person));//UPDATE I'm not using ObjectUtil.toString()
// traces [class Person]
是否有 toObject() 方法?采用相同格式的 toString 输出并创建一个实例,如下所示:
var person:Person = ObjectUtil.toObject("[class Person]");
更新:
对不起。这是不正确的。我以为我在使用 ObjectUtil.toString()。我不是。当我使用该方法时,它 return 类似于:
(com.printui.assets.skins::fontList)#0
accessibilityDescription = ""
accessibilityEnabled = true
accessibilityImplementation = (null)
在我的代码中某处它是 returning "[class Person]" 就像我被描述的那样。这是行:
var currentValue:* = target[property];
popUpValueInput.text = currentValue;
我认为它使用的是 instance.toString() 但 toString() 不是 return 任何接近于此的东西:
var f:fontList = new fontList();
var f1:fontList = new fontList();
trace("" + f);
trace("" + f1);
trace(f1.toString());
结果:
fontList2
fontList5
fontList5
一般来说你应该这样做:
在你的 Person class 添加这个方法:
public function toString():String
{
return "Person" ;
}
因此,要按名称创建 class 的实例,请使用以下代码:
var p = new (getDefinitionByName( ObjectUtils.toString(person)))
或者它可以用作所有 classes 的一般正则表达式(感谢 1.21 吉瓦):
var p = new (getDefinitionByName( ObjectUtil.toString(Person).match(/\((.*)\)/)[1] ) );
使用 ObjectUtil 时,有一个名为 toString() 的方法,它接受一个对象。如果你给它传递一个 class 命名的 "Person" 它将 return 字符串“[class Person]”。
var person:Person = new Person();
trace(ObjectUtil.toString(person));//UPDATE I'm not using ObjectUtil.toString()
// traces [class Person]
是否有 toObject() 方法?采用相同格式的 toString 输出并创建一个实例,如下所示:
var person:Person = ObjectUtil.toObject("[class Person]");
更新:
对不起。这是不正确的。我以为我在使用 ObjectUtil.toString()。我不是。当我使用该方法时,它 return 类似于:
(com.printui.assets.skins::fontList)#0
accessibilityDescription = ""
accessibilityEnabled = true
accessibilityImplementation = (null)
在我的代码中某处它是 returning "[class Person]" 就像我被描述的那样。这是行:
var currentValue:* = target[property];
popUpValueInput.text = currentValue;
我认为它使用的是 instance.toString() 但 toString() 不是 return 任何接近于此的东西:
var f:fontList = new fontList();
var f1:fontList = new fontList();
trace("" + f);
trace("" + f1);
trace(f1.toString());
结果:
fontList2
fontList5
fontList5
一般来说你应该这样做: 在你的 Person class 添加这个方法:
public function toString():String
{
return "Person" ;
}
因此,要按名称创建 class 的实例,请使用以下代码:
var p = new (getDefinitionByName( ObjectUtils.toString(person)))
或者它可以用作所有 classes 的一般正则表达式(感谢 1.21 吉瓦):
var p = new (getDefinitionByName( ObjectUtil.toString(Person).match(/\((.*)\)/)[1] ) );