var string = 'object.data.path';
这是一个类似于变量路径的字符串。
如何从该字符串返回相应的变量?
将字符串转换为return object.data.path;
这背后的事情是字符串可能更长(更深),如:
var string = 'object.data.path.original.result';
答案 0 :(得分:3)
function GetPropertyByString(stringRepresentation) {
var properties = stringRepresentation.split("."),
myTempObject = window[properties[0]];
for (var i = 1, length = properties.length; i<length; i++) {
myTempObject = myTempObject[properties[i]];
}
return myTempObject;
}
alert(GetPropertyByString("object.data.path"));
这假定您的第一级对象(在本例中称为object
)是全局的。
或者,虽然不推荐,但您可以使用eval
函数。
答案 1 :(得分:3)
假设您不想只使用eval
,您可以尝试这样的事情:
function stringToObjRef(str) {
var keys = str.split('.'),
obj = window;
for (var i=0; i < keys.length; i++) {
if (keys[i] in obj)
obj = obj[keys[i]];
else
return;
}
return obj;
}
console.log(stringToObjRef('object.data.path.original.result'));
使用for循环一次降低一级,如果链中的特定键未定义则返回undefined。