如何将对象转换为其文字字符串?

时间:2013-10-09 10:58:39

标签: javascript

我有一个包含对象文字的字符串:

var literalStr = "{
     a: 1, 
     b: function(){return 'b'}
 }";

我可以从字符串中创建一个对象:

var obj = eval("(" + literalStr + ")");

有没有一种简单的方法可以从对象中获取文字字符串?

我正在寻找像JSON.stringify()这样的东西但是它创建了原始文字,其中包含没有引号的函数和属性名称。

2 个答案:

答案 0 :(得分:1)

您正在寻找非标准的toSource method(s)。请注意,跨浏览器版本是不可能的,因为某些js引擎不能从函数中获取源字符串。

答案 1 :(得分:0)

function stringify(source) {
    if (typeof (source) == "object") {
        var str = "{";
        for (var key in source) {
            var value = source[key];
            str += key + ":" + stringify(value) + ",";
        }
        return str.substring(0,str.length-1) + "}";
    }
    return source.toString();
}

然后

console.log(stringify(obj));
// writes "{a:1,b:function (){return 'b'}}"

Demo in jsFiddle