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 に答える