2015-10-16 84 views
0

我有一個函數,我想傳遞一個包含對象屬性路徑的變量。該路徑將根據函數被調用的位置而改變。我無法弄清楚如何將路徑保存在變量中。將屬性鏈傳遞爲括號表示法變量

我需要在'x'中保存data.a.b.c。 我需要存儲的路徑「Y」訪問「C」(我假設使用括號標記)

功能

y = [a.b.c] 
calculate(data, y) 

calculate = function(data, y) { 
    x = data[y] 
} 
+1

我假設你有'a.b.c'作爲一個字符串?像'y ='a.b.c''?如果是這樣,請參閱:http://stackoverflow.com/q/6491463 –

+0

函數resolve(path,base){return path.reduce(function(o,k,_,__){var v = 0 &&o[k]; return v ;},base || Window);} x = resolve(path.split(「。」),data);' – dandavis

回答

0

你不能做你想要做什麼。一系列「括號記號」切片是純粹的語法。但是你可以通過周圍的路徑的功能,像這樣,用傳遞給countInDeep匿名函數:

var deep = {} 
deep.a = {} 
deep.a.b = {} 
deep.a.b.c = {} 
deep.a.b.c.count = 42 

function countInDeep(func) { 
    return func(deep).count 
} 

console.log(countInDeep(function(x) { return x.a.b.c })) 
/* outputs: 42 */ 
相關問題