Javascript 如何在JS中动态引用对象及其对象和属性

Javascript 如何在JS中动态引用对象及其对象和属性,javascript,Javascript,我正在将属性options\u r传递到函数中,但我需要动态引用它的属性 为了用一种简单的方式进行说明,这里有一个接受参数的函数 options_r = {} function blah(myData,options_r) { output_data = myData[options_r.target]; // alert(output_data) } 这很有效 myData.joe = 'male'; myData.anne = 'female'; let options_

我正在将属性
options\u r
传递到函数中,但我需要动态引用它的属性

为了用一种简单的方式进行说明,这里有一个接受参数的函数

options_r = {}
function blah(myData,options_r) {
    output_data = myData[options_r.target]; //
    alert(output_data) 
}
这很有效

myData.joe = 'male';
myData.anne = 'female';
let options_r.target = 'joe';
blah(myData, options_r);
这不是

myData.dataset.joe = 'male';
myData.dataset.anne = 'female';
let options_r.target = 'dataset.joe';
blah(myData, options_r);
…是的,有时需要以这种方式引用对象中的对象

有什么想法吗?
谢谢

您试图完成的不是JavaScript的本机功能

例如,一些常见的扩展库就是这样做的。在你的情况下,如果你使用它,你将能够做到什么

_.get(myData, options_r.target);
否则,您将不得不编写一些代码来解析您的路径并自己进行智能对象遍历


最后一个选择是使用基于
eval
的解决方案,但我真的不建议这样做。

为什么不
let options_r.target='joe';blah(myData.dataset,选项)
foo.bar
foo['bar']
是等效的,但是
foo.bar.baz
foo['bar.baz']
不是。如果希望以相同的动态方式访问这两个“级别”,则需要使用
foo['bar']['baz']
。如果只有字符串形式的
bar.baz
,则必须在点处拆分,然后以递归方式沿路径向下移动。@gaitat-我无法更改或规范化myData参数,它将是dynamic@CBroe-是的,但我不能改变函数中的任何内容,我只能使用object_r.target参数:(正如@Broe所说:
myData['dataset.joe']
不同于
myDta.dataset.joe
。显然我们不需要
options_r
参数?