【发布时间】:2013-02-02 23:28:46
【问题描述】:
我有这个功能
function _get(name) {
return plugin._optionsObj[name] !== undefined ?
plugin._optionsObj[name] : plugin._defaults[name];
}
我希望能够在我的 _defaults 对象中包含对象,但是我不知道如何检索它们,只使用一组方括号。
即
plugin._defaults = {
val1: 1,
val2: 2,
obj1: {
someVal: 3
}
}
是否可以从我上面的函数中访问“someVal”?我尝试为参数传递'obj1.someVal',但它没有用。想法?
编辑:我找到了解决方案,并将其发布在下面作为答案。我编写了一个非常好的小函数来通过字符串遍历嵌套值,并且我不必更改我的函数来实现它。我希望这对处于类似情况的任何人有所帮助。
【问题讨论】:
-
返回 plugin._optionsObj[name] !== undefined ? plugin._optionsObj[name] : plugin._defaults[obj1][someVal];不工作?
-
看这个要点:gist.github.com/3208381#file__.deep.js...如果你使用下划线,你只需将路径(例如'obj1.someVal')作为字符串传递,它会遍历对象图以找到嵌套的价值。
-
我正在寻找是否有办法在不改变我的功能或实现的情况下解决这个问题。
-
@VladMagdalin 你能举个例子吗?我不确定您所说的使用下划线是什么意思。
-
不改变你的 _get() 函数,不,不可能解决这个问题,除非你可以改变你的数据结构。 Underscore 是一个库(类似于 jQuery),可帮助您处理 JavaScript 对象。我发布的 _.deep() mixin 是 Underscore 的插件。
标签: javascript oop object syntax