使用String获取本地对象的属性

时间:2016-03-22 19:28:10

标签: javascript string object properties

我希望通过使用它来获取本地对象变量的属性的值"完全限定的"变量名。

function foo() {
    var obj = {
        prop: "val"
    }

    var valueStr = "obj.prop";
    var value = // code here that gets value using valueStr
}

我已经看到this answer从字符串中获取全局变量,我看到this other answer使用字符串从对象获取属性,但是最简单的方法是什么对象 AND 该对象的属性全部来自字符串?我不希望我的对象必须是全球性的。

以下是我目前正在解决此问题的方法,但它要求将对象制作为全局变量。

var valueStrParts = valueStr.split(".");
var value = window[valueStrParts[0]][valueStrParts[1]];

我不想使用eval(),但如果必须,我会这样做。但是,我需要能够验证它评估的字符串是否已经过消毒,并且除了访问该属性之外,还不会做任何其他事情。

1 个答案:

答案 0 :(得分:1)

您可以将eval()用于此目的,

var obj = { prop: "val" };
var valueStr = "obj.prop";
var func = function(str){ console.log(eval(str)) };
func.call(obj, valueStr);

只需将执行scope的{​​{1}}更改为eval,然后将object传递给string

DEMO