2013-06-25 81 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

相關問題