2013-06-25 53 views
1

在下面的函数中,我想传递两个参数。 instance引用一个对象,prop引用一个对象属性名称。传递给函数作为对象属性名称的字符串

door.x = 20; // door['x'] refers to the same 
key(door, 'x'); 
function key(instance, prop) { 
    Tween.get(instance, {override: true}).to({prop: -150}, instance[prop]); 
} 

因为我需要能够引用door['x']在一个点(这是写作door.x的另一种方式),x总是需要一个字符串。然而,同样的x这里,这里需要用作对象属性的名字,但我不能有一个字符串在那里,因为代码是行不通的:

Tween.get(door, {override: true}).to({'x': -150}, door['x']); // does not work because a string has been passed as an object property name 

我真正想要的是这样的:

Tween.get(door, {override: true}).to({x: -150}, door['x']); // works 

所以,我的问题是:是否有某种方法可以让我“解开”一个字符串?或者有没有其他解决方案呢?

+0

然后我误解了那是怎么回事。 '{x:-150}'起作用,但'{'x':150}'不起作用。 @AlexWayne – AKG

回答

3

是这样的吗?

function key(instance, prop) { 
    var obj = {}; 
    obj[prop] = -150; 
    Tween.get(instance, {override: true}).to(obj, instance[prop]); 
} 
+0

这是一个非常**聪明的方式来做到这一点。 – AKG

+0

对象文字可能没有动态属性名称。所以你必须这样做。 –

+0

谢谢@AlexWayne。仍在学习:) – AKG

相关问题