2009-02-19 81 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

相关问题