2010-11-05 75 views
0
var o:Object = {title: 'asad'}; 
var v:ImageItemVO = o as ImageItemVO; 
var v:ImageItemVO = ImageItemVO(o); // throws an error 

我的ImageItemVO有一個名爲title的公共var。 此代碼運行後,「var v」爲空。爲什麼? 有人可以給我一個如何使它工作的例子嗎?AS3:如何使用「as」運算符?

回答

5

as運算符用於將對象從一種類型轉換爲另一種類型,但只有在可以以這種方式轉換對象時纔有效。如果它不能,它會給你null。鑄造的另一種方式(在最後一行做的方式),如果對象不能鑄造,將會給你一個錯誤。

在這種情況下,您根本不想投射,投射不會以這種方式工作。相反,你可能想要做這樣的事情:

var v: ImageItemVO = new ImageItemVO(); 
v.title = "asad"; 

或者有更多的屬性,你不想手動輸入所有這些:

var o: Object = { ... }; 
var v: ImageItemVO = new ImageItemVO(); 
for (var key: String in o) { 
    v[key] = o[key]; 
} 

此代碼將複製所有物業ov

+0

所以..有沒有辦法使用包含在o中的數據的ImageItemVO實例? – 2010-11-05 17:36:31

+0

是的,這是正確的..我忘了這種方法 – 2010-11-05 17:42:20

+0

因爲你反序列化它的對象 - 也許更好的方法:ImageItemVO :: serialize(o:Object) - 然後你可以在這裏做循環[ key] = o [key]; – ansiart 2010-11-05 20:01:33