将字符串转换为javascript对象

时间:2012-11-21 07:43:04

标签: javascript jquery

我希望我的用户在输入字段中输入一些文本并点击按钮“评估”点击该按钮我会将输入的文本转换为JavaScript对象(如果可以的话)并将显示其所有成员(属性和函数) )。

例如,如果用户输入"document""window",我将分别显示documentwindow的所有成员。

迭代通过对象的成员完成,但是当用户在输入文本字段中输入一些文本并且我得到该文本时,该值被视为字符串当然如何将该文本转换为像{{1}这样的对象{}} "document"document"window" ???

4 个答案:

答案 0 :(得分:3)

您可以使用“eval”。 修改:感谢@Victor和@Cerbrus的评论,指出此处不需要 eval 。您也可以使用window[input]

var input = "document";
var obj = eval(input);
for (var prop in obj) console.log(prop + ": " + obj[prop]);

如果它是另一个对象(即全局对象)的成员,那么您可以使用括号表示法:

var hello = "world";
var variableName = "hello";
console.log(JSON.stringify(window[variableName]));

答案 1 :(得分:1)

建议的解决方案不适用于子属性(例如window.document.body)。我写了一个小jsFiddle,适用于大多数情况。它肯定缺乏真正的错误检查,但应该是一个开始http://jsfiddle.net/a6A4m/1/

的好地方
 var showProperties = function(text) {
        var output = '';
        var object = window;

        // if it isn't the global window object
        if (text !== 'window') {
            var parts = text.split('.');

            // Since we're using pop, we need to reverse it first.
            parts = parts.reverse();

            while (parts.length > 0) {
                object = object[parts.pop()];
            }
        }

        $('#content').html(getOutput(object));
    };

答案 2 :(得分:0)

如果您获得类似的输入值

var selector = $('input').val();

然后对象将是

$(selector)

答案 3 :(得分:0)

如果您的字符串是JSON格式,或者字符串是javascript对象的名称,这里我看到jQuery.parseJSON将字符串转换为对象的方法。

var s2o = (new Function("return " +val+";"))();

假设val包含来自文本输入的值。

它类似于使用Function对象作为'编译器',以便您返回一个javascript对象。

如果用户传入文档,则会发出document个对象;
如果用户传入 {id:1,名称:"测试"} ,则会传出该对象。