2014-01-15 34 views
0

假設我有以下對象。如何在JavaScript中鏈接方法?

myobj = { 
    'item1'{'key1':'value1'}, 
    'item2'{'key2':'value2'} 
} 

我如何定義這樣一個功能,我可以打電話:

var value = getMyObjItem('item2').getValue(); 

爲了得到「值」?我想避免定義'getItem'(帶有item參數)和'getItemByValue'(帶有item和key的兩個參數)。

+2

首先,你原來的javascript無效。它應該在項目和{}之間有「:」。然後你可以直接訪問這些對象。例如'var test = myobj.item2.key2' - http://jsfiddle.net/USD8f/ –

+0

那麼如果item有多個key,那麼這將如何工作呢? –

回答

1

你不清楚你想要什麼,但我盡我所能用我得到的信息做到了最好。以下功能以您要求的確切方式運行,並且可能是給您所要求的而不是您需要的一個好例子。儘管如此:

myobj = { 
    'item1': {'key1':'value1'}, 
    'item2': {'key2':'value2'} 
}; 

function getMyObjItem(key) { 
    return { 
     value: myobj[key]["key" + key.replace("item", "")], 
     getValue: function() { 
      return this.value; 
     } 
    }; 
} 

var value = getMyObjItem('item2').getValue(); // will return "value2" 

請注意,如果你保持你的例子演示了確切性質方案,這隻會工作。

+0

你能解釋一下這個工作原理嗎?這裏的「價值」是如何調用的?謝謝! – 1252748