如何使用JS 的模板字符串来获取对象某个属性的值,如拼接出 obj[a][b][c]
这种,其中 a/b/c 的个数是不定的,所以 obj后面该如何拼接呢?
如果直接是
const obj = {
a: {
b: {
c: 1
}
}
}
const str = 'a.b.c';
const tpl = obj`${str.split('.')}` ;
这时候会报错 obj 不是一个 function
那该怎么来拼接呢,能够直接使用模板函数来直接得到 obj.a.b.c 的值
注:不使用循环来获取obj 的值,比如使用 map / reduce / while 来获取,也就是不使用 lodash 中 get 的方式,现在想的是如何来根据模板字符串来获取,想探讨一下这种形式
一种不太推荐的写法
with(obj){eval(str)}
,就是在with中让str以代码的形式运行,eval还可以换成new Function纯模板字符串实现不了,语言特性如此,最好使用循环来获取值