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

How to convert an object to its literal string?

本文关键字:文本 字符串 转换 对象      更新时间:2023-09-26

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

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

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

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

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

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

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

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 中演示