在 javascript 代码中,我有一个字符串,它定义了对象内的属性路径。例如
var def = "contact.email"
如何从此字符串中获取以下函数?
o => o.contact.email
这样我就可以通过以下方式使用它:
var person = {
name: 'Test',
contact: { email: 'test@test.test' }
}
var emailGetter = MagicCompileFunction('contact.email');
var email = emailGetter(person);
// here, email should hold the value of person.contact.email
路径字符串在编译时是未知的。它也可以由用户提供。
该解决方案也应该在非浏览器环境中工作(没有window
对象),例如在 NodeJS 服务器端 javascript 中。
我知道一种解决方案是创建一个通用方法,它将一个对象和一个字符串作为参数(valueGetter(person, "contact.email")
例如),其中字符串定义对象内的路径,然后在每个点上拆分字符串'。并按照对象上的路径。但我不希望这个算法在每次调用getter
函数时都执行。我需要一个动态编译的方法,它会给我一个最终的 getter,它可以立即访问所需的(子)属性。