将属性链作为括号表示法变量传递

时间:2015-10-16 20:37:07

标签: javascript

我有一个函数,我想传递一个包含对象属性路径的变量。此路径将根据调用函数的位置而更改。我无法弄清楚如何在变量中保存路径。

我需要在'x'中保存data.a.b.c. 我需要存储在'y'中访问'c'的路径(我假设使用括号表示法)

功能

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

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

1 个答案:

答案 0 :(得分: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 */