var string = 'object.data.path';
字符串作为对象变量的对象引用
这是一个类似于变量路径的字符串。
如何从该字符串返回相应的变量?
喜欢的东西转化串入return object.data.path;
这背后的事情是该字符串可能是更长的时间(深),如:
var string = 'object.data.path.original.result';
var string = 'object.data.path';
字符串作为对象变量的对象引用
这是一个类似于变量路径的字符串。
如何从该字符串返回相应的变量?
喜欢的东西转化串入return object.data.path;
这背后的事情是该字符串可能是更长的时间(深),如:
var string = 'object.data.path.original.result';
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
函数。
假设你不想只是使用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如果链中的一个特定的键未定义。
字符串从哪里来? – Dennis
HTML5数据属性名称,破折号用点代替。 – jolt