2009-02-19 80 views
0

我需要一個函數獲取兩個相同長度的數組參數:屬性名稱(字符串)和屬性值。如何將運行時參數命名的屬性添加到動作對象?

函數應使得,舉例來說,調用

var obj:Object = makeObject({"prop1","prop2"},{1,2}); 

測試條件(obj.prop1 == 1 && obj.prop2 == 2)應該是真實的後創建具有屬性的對象。

如果你知道你的動作,我會相信這應該是一個容易的動作 - 也許它只是一個語法的東西。

遲加
重讀我的問題後,它出現這並不是很容易理解。
我的問題是命名基於運行時值的屬性,即使用字符串參數來引用屬性名稱。

回答

3

一個Object可以像圖(或關聯數組)與鑰匙串對待 - 我相信這是你想做什麼。你可以在Flex的Adobe's documentation中閱讀關聯數組。

private function makeObject(keys : Array, values : Array) : Object 
{ 
    var obj : Object = new Object(); 

    for(var i : int = 0; i < keys.length; ++i) 
    { 
     obj[ String(keys[i]) ] = values[i]; 
    } 

    return obj; 
} 

這將創建一個新的Object連鍵等於第一數組中的值,和值等於所述第二陣列中的項目。

+0

「測試條件(obj.prop1 == 1 && obj.prop2 == 2)應該爲true」。它不會,對吧? – bzlm 2009-02-19 21:51:13

3

不知道我理解你的問題,但你可以使用文本對象創建對象:

var item:Object = {prop1: 1, prop2: 2}; 

trace (item.prop1 == 1 && item.prop2 == 2) // true 
+1

我相信海報想要一種方法來創建一個在編譯時未知的鍵的對象,所以你所描述的語法在這種情況下將不起作用。鍵名稱只是傳遞給函數的字符串。 – 2009-02-19 21:35:12

相關問題