【发布时间】:2011-10-17 21:05:59
【问题描述】:
var arr = { foo : 1, bar: { baz : 2 }, bee : 3 }
function getter(variable) {
return arr[variable];
}
如果我想要 'foo' 和 'bee',我可以这样做 arr[variable] - 这很简单,函数就是这样做的。
但是如果我想获得arr.bar.baz AKA arr[bar][baz] 怎么办?
我可以将什么传递给让我这样做的 getter 函数,(当然也让我使用相同的函数获取非嵌套属性)。
我尝试了getter('bar.baz') 和getter('[bar][baz]'),但没有奏效。
我想我可以解析点或括号(比如这里:In javascript, test for property deeply nested in object graph?)。有没有更清洁的方法? (当然除了 eval。)
尤其是因为我需要在一个循环中为一堆数组元素正确设置很多次。
【问题讨论】:
-
为什么不直接使用链接问题中的这种方法?
-
主要是因为经常调用函数的开销,还有如果有更好的方法想学。
-
另一种选择是将回调作为变量参数引用,如下所示: getter(obj => obj.foo.bar.baz) 然后在算法中调用它 getter(variable) { return variable (arr) } 可能会测试是否是一个字符串,只需使用 [ ] 符号或者它是否是函数调用它。
标签: javascript object