在 javascript 中,我想通过名称来选择某个属性,该属性存储在字符串中。我知道 window[someString]
是正确的选择。当 someString = "somevariable"
时它可以工作,但不幸的是,我的程序也会有诸如 someobject.someproperty
之类的字符串。这不起作用。
所以问题是,给定代码
someString = "one.two.three";
one = {
two: {
three: "This is the value that I want to get"
}
};
// window[someString] does not work.
,如何使用 someString
的值获取 one.two.third
的值,不使用 eval
?
最佳答案
使用 split 并进行递归方法
var someString = "one.two.three";
var keys = someString.split('.');
one = {
two: {
three: "This is the value that I want to get"
}
};
function getinnerProperty(object, keys) {
var key = keys.shift();
if (keys.length) {
var nestedObject = object[key];
return getinnerProperty(nestedObject, keys);
} else {
return object[key];
}
}
console.log(getinnerProperty(window, keys));
关于javascript - 通过字符串选择全局变量,包括子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32726311/