1

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

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

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

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

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

我正在寻找类似的东西,JSON.stringify()但它使用不带引号的函数和属性名称创建原始文字。

4

2 回答 2

1

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

于 2013-10-09T11:11:16.983 回答
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'}}"

jsFiddle 中的演示

于 2013-10-09T11:19:52.567 回答